`
xqf222
  • 浏览: 128872 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串

 
阅读更多

--SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串

--应用场合: 多为类似包含当前订单数据表跟历史订单数据表,当前有效用户数据表跟历史删除用户数据表之间关联查询。很多时候当前表跟历史表的字段设计成一样的,有的则不同,不同的话在联合查询两表数据时候就会用到这个。

--定义数据表名称
Declare @TargetTableName1 nvarchar(250)--定义要查询的数据表名称变量1
Declare @TargetTableName2 nvarchar(250)--定义要查询的数据表名称变量2
Set @TargetTableName1='数据表名称1'--这里修改成您要查询的数据表名称(A+B)中的A
Set @TargetTableName2='数据表名称2' --这里修改成您要查询的数据表名称(A+B)中的B

--定义列总数
Declare @TotleColumns int
Select @TotleColumns=count(name) from syscolumns Where ID=OBJECT_ID(@TargetTableName1) and name in (Select name from syscolumns Where ID=OBJECT_ID(@TargetTableName2))
print '数据表'+@TargetTableName1+'和数据表'+@TargetTableName2+'共有相同字段总数为:'+Convert(nvarchar(20),@TotleColumns)

--定义所有字段名称字符串
Declare @ColumnsString nvarchar(4000)--最终结果字符串变量
set @ColumnsString=''
Declare @ColumnName nvarchar(255)--游标存储变量


--通过游标读取两表的共有字段

--声明游标mycursor
declare mycursor cursor for select name from syscolumns Where ID=OBJECT_ID(@TargetTableName1) and name in (Select name from syscolumns Where ID=OBJECT_ID(@TargetTableName2)) order by colid

--打开游标
open mycursor

--从游标里取出数据赋值到我们刚才声明的变量中
fetch next from mycursor into @ColumnName

--如果游标执行成功
while (@@fetch_status=0)
begin

--显示出我们每次用游标取出的值
Set @ColumnsString=@ColumnsString+','+@ColumnName

--用游标去取下一条记录
fetch next from mycursor into @ColumnName
end

--关闭游标
close mycursor
--撤销游标
deallocate mycursor

--开头包含逗号则去除
if left(@ColumnsString,1)=',' set @ColumnsString=substring(@ColumnsString,2,len(@ColumnsString)-1)

print @ColumnsString

分享到:
评论

相关推荐

    SQL Server把某个字段的数据用一条语句转换成字符串

    在SQL Server中,有时我们需要将某个表字段中的多个数据项合并为一个字符串,这通常用于生成报告、拼接查询条件或其他需要数据集合作为单一文本的情况。本篇将详细讲解如何使用一条SQL语句实现这一功能。 首先,...

    SQLserver遍历所有表数据库命令

    我们可以通过查询 systypes 系统表来获得某个字段的数据类型。 游标的使用 在 SQL Server 中,游标是一种特殊的数据库对象,允许我们逐行遍历查询结果集。游标可以帮助我们遍历所有表数据库命令,并执行相应的操作...

    sqlserver游标深解

    以下是一个创建名为 `CustomerCursor` 的游标示例,该游标将从 `customer` 表中选择所有账号编号、姓名和余额,其中 `province` 字段为空字符串。 ```sql DECLARE CustomerCursor CURSOR FOR SELECT acct_no, name,...

    sql server 2012 数据库所有表里查找某字符串的方法

    总结起来,SQL Server 2012中查找数据库所有表中特定字符串的方法是通过结合游标和动态SQL,遍历所有表及其字符串类型字段。虽然这种方法直观且能解决问题,但在处理大量数据时应考虑性能优化。在实际操作中,如果...

    SQLSERVER遍历数据

    在SQL Server中,有时我们需要对数据库中的所有表及其字段进行遍历操作,比如查找特定字符串是否出现在某个字段中。这种需求常见于系统审计、数据清理或数据迁移等场景。本篇将通过一个具体的示例来详细解析如何实现...

    学习PB与SQL Server数据库的连接

    1. **在数据库中创建学生表**:首先需要在SQL Server数据库中创建一个名为“学生表”的表,包含字段`SNO`(学号)、`SNAME`(姓名)、`SSEX`(性别)、`SAGE`(年龄)和`SADDR`(地址)。然后向该表中插入几条示例记录以供后续...

    SqlServer初学者学习笔记

    4. 数据类型:Sql Server提供多种数据类型,如数值类型(INT、DECIMAL等)、字符串类型(VARCHAR、NVARCHAR)、日期时间类型(DATE、DATETIME2等)、二进制类型(BINARY、VARBINARY)等。选择合适的数据类型对于存储...

    oracle与SQL server的语法差异总结

    默认情况下,Oracle对字符串不区分大小写,但可以通过设置数据库参数使其区分大小写。SQL Server则默认对字符区分大小写。 8. **序列**: - Oracle使用序列对象(如 `CREATE SEQUENCE seq_name`) 来生成自动递增...

    sql server 2005 批量导出照片代码

    本篇代码示例展示了如何在SQL Server 2005中通过查询、游标和系统存储过程`xp_cmdshell`实现批量导出照片的功能。值得注意的是,在实际部署时应考虑安全性问题,并确保遵循最佳实践来保护数据库和系统安全。

    博图WinCC V16用ADODB、DataGrid控件显示SQL Server数据.docx

    需要注意的是,SQL查询语句中的表名和字段名应根据实际数据库结构进行调整,同时确保连接字符串中的DSN、uid和pwd等信息正确无误。此外,为了提高性能和避免数据冲突,可以考虑使用参数化查询和适当调整游标类型。 ...

    sqlserver基础(示例、注释)

    通过以上内容,我们可以了解到 SQL Server 中创建数据库、表结构、插入数据、查询数据、更新与删除数据的基本方法,以及左右连接查询、存储过程和游标的使用。这些知识点对于 SQL Server 的初学者来说是非常重要的...

    SQL server习题及答案

    根据给定文件的信息,我们可以提炼出关于SQL ...通过上述解析,我们可以清晰地理解这些题目中涉及的SQL Server相关知识点,包括数据库类型、数据定义功能、数据操纵语言、数据控制语言、数据查询语言等方面的内容。

    sqlserver期末考试试题A.pdf

    涵盖了SQL Server的身份验证模式、主键、默认值约束、全局变量、触发器、检查约束、通配符、存储过程、SELECT语句、WHERE子句、ORDER BY子句、GROUP BY子句、HAVING子句、视图、存储过程、游标等多个知识点。...

    SQL Server SQL优化

    - **推荐做法**:确保查询条件与字段类型的匹配度,如避免使用`DELETE FROM A WHERE cust_id = @id`(若`@id`为整型,而`cust_id`为字符串类型)。 - **不推荐做法**:直接进行不同类型的比较,如`SELECT * FROM B ...

    SQLServer2012数据库应用期末考试题.docx

    `INNER JOIN`返回的是两个表中满足连接条件的行,即只有两边都有匹配的记录才会被包含在结果集中。 ### 22. 视图的概念 视图是基于一个或多个表的结果集的虚拟表。它并不实际存储数据,而是存储定义视图的查询。...

    数据库每日增长量脚本

    转换包括日期时间格式化、单位转换等,例如将`reserved`、`datainfo`等字段的值从字符串类型转换为数值类型,并去除单位“KB”。 4. **游标关闭与释放**:处理完所有表后,关闭并释放游标,最后删除临时表。 #### ...

    sqlserver 游标的简单示例

    在SQL Server中,游标是一种数据处理工具,它允许我们逐行处理查询结果集,而不仅仅是一次性处理所有数据。在给定的示例中,我们将深入理解如何在SQL Server中使用游标,以及这个特定的游标示例是如何工作的。 首先...

    VC通过ADO打开SQL SERVER数据库,并将其中的表、字段、数据显示出来的小程序 (2).docx

    该文档介绍了一个使用VC++(Visual C++)通过ActiveX Data Objects (ADO) 连接SQL SERVER数据库,并显示数据的小程序。以下是对其中关键知识点的详细说明: 1. **ADO连接数据库**: - `::CoInitialize(NULL)`:...

    sqlserver 中ntext字段的批量替换(updatetext的用法)

    在这个存储过程中,首先声明了变量并设置初始值,然后通过游标遍历目标表中所有包含旧字符串`@otxt`的记录。对每条记录,它使用`patindex`找到旧字符串的位置,并使用`updatetext`更新文本指针(`@ptr`)所指向的...

Global site tag (gtag.js) - Google Analytics