SQL查找某个"关键字"与表中某列是否相等或包含

用于人工分析数据库中数据依赖关系

以下sql语句修改完
SET @SearchTxt=’此处输入要查询的内容’
后直接全部执行即可。


--查询的条件
DECLARE @SearchTxt AS NVARCHAR(100)
SET @SearchTxt='此处输入要查询的内容'

--定义表变量结构
DECLARE @info TABLE
(
     TableName NVARCHAR(100)
    ,ColumnName NVARCHAR(100)
)

DECLARE @TableName AS NVARCHAR(100)
DECLARE @ColumnName AS NVARCHAR(100)
DECLARE @SQLSTR AS NVARCHAR(1000)
DECLARE @Result AS BIT

--定义游标  获取所有表的所有列
DECLARE X CURSOR FOR
SELECT b.name as 表名,a.name as 列名
FROM sys.columns a 
JOIN sys.tables b on a.object_id=b.object_id
--WHERE user_type_id = 127  --此处可以添加数据类型,如果知道类型精确类型匹配查找

--打开游标
OPEN X
FETCH NEXT FROM X INTO @TableName,@ColumnName

WHILE (@@FETCH_STATUS=0) 
    BEGIN

    --拼接查询SQL,如果想做包含查询 此处 改为 LIKE 拼接即可
    SET @SQLSTR = N'SELECT * FROM ' + @TableName 
                            + ' WHERE [' + @ColumnName + '] = ''' + @SearchTxt + ''''

    SET @SQLSTR = 'SET @Result = CASE WHEN EXISTS('+ @SQLSTR +') THEN 1 ELSE 0 END'

    PRINT @SQLSTR

    --执行动态SQL
    EXECUTE SP_EXECUTESQL @SQLSTR ,@params = N' @Result BIT out ',@Result=@Result out

    --判断是否存在,插入表变量
    IF (@Result='1')
    BEGIN
        INSERT INTO @info VALUES (@TableName,@ColumnName)
    END

    FETCH NEXT FROM X INTO @TableName,@ColumnName

    END

    CLOSE X
    DEALLOCATE X

--输出查询结果
SELECT * FROM @info
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值