加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

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

发布时间:2020-12-12 14:34:15 所属栏目:MsSql教程 来源:网络整理
导读:--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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读