SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串
2012-07-01 09:29
351 查看
--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
--应用场合: 多为类似包含当前订单数据表跟历史订单数据表,当前有效用户数据表跟历史删除用户数据表之间关联查询。很多时候当前表跟历史表的字段设计成一样的,有的则不同,不同的话在联合查询两表数据时候就会用到这个。
--定义数据表名称
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
相关文章推荐
- SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串
- SQLSERVER通过游标查询两个数据表共有字段名组合成的字符串
- Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
- Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- SQLSERVER查询单个数据表所有字段名组合成的字符串脚本
- sqlserver 查询多个字段数据重复sql语句
- sqlserver如何把查询的某个字段的列表转换为字符串输出
- oracle 通过连接运算符双竖线“||” 将两个字段的字符串连接在一起。也可以在字段中加入字符串
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
- sqlserver 触发器/计算两个时间的间隔天数/查询倒数第二条数据
- mysql 将查询出来的某一字段组合成字符串
- 通过异类查询(OpenDataSource - OLEDB引擎驱动)把外部数据(Excel,TXT)导入到SqlServer及job代理执行出错的处理
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
- 通过游标实现对text字段的修改,修改其中某几个字符串(updatetext )
- sqlserver修改查询出来数据的前几行的字段内容
- 少量数据通过Excel表格数据导入server SqlServer查询
- mysql判断查询的字段的数据是否包含指定的字符串