sqlserver根据内容查表和列
declare--定义变量
@v_sql nvarchar(4000),@v_sql2 nvarchar(4000),@v_s1 int,@v_s2 nvarchar(200), @v_s3 varchar(2000), @i INT,
--定义游标
@cursor_1 cursor
set @cursor_1 = cursorfor SELECT OBJECT_NAME(s.id) AS 'table',NAME AS name FROM syscolumns s WHERE s.id = OBJECT_ID (OBJECT_NAME(s.id),'u')
--根据 OBJECT_ID('表名','u')找到用户表
open@cursor_1
fetch next from @cursor_1INTO @v_s2, @v_s3 --得到的参数输出
WHILE@@FETCH_STATUS=0--游标的循环尺度
BEGIN--循环语句块
SET @v_sql='if exists( select '''+@v_s2+''' as ''table''from ' +@v_s2+ ' where '+@v_s3+' like ''%福建%'') print ''表 '+@v_s2+' 列 '+@v_s3+''' '
--动态sql拼接 if exist的快速查询 参数''不好弄
EXEC SP_EXECUTESQL @v_sql,N'@count int out',@v_s1OUT
--执行存储过程 SP_EXECUTESQL 可以带参数 但必须有N'@count int out' 不知为何
fetch next from @cursor_1INTO @v_s2, @v_s3--游标指向下一个
END
想要输入查询内容 更改 like ''%福建%'' {:soso_e100:}先赞一个,难得的sql语句。
页:
[1]