我想找到表中有~
的记录。
我正在使用光标,但出现意外错误。
任何帮助将不胜感激。
DECLARE @test VARCHAR(5000)
DECLARE @column_name VARCHAR(2000)
Declare @TABLE_NAME_MAIN VARCHAR(200)
SET @TABLE_NAME_MAIN = 'Ar_Receipt_Item_OHM'
DECLARE cur_name
CURSOR FOR
SELECT COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = @TABLE_NAME_MAIN
OPEN cur_name
FETCH NEXT FROM cur_name INTO @column_name
WHILE @@Fetch_status = 0
BEGIN
SET @test = N'SELECT top 2 * FROM OHMPreStage.dbo.'+@TABLE_NAME_MAIN+' WHERE '+@column_name+' LIKE ''%~%'''
exec @test
FETCH NEXT FROM cur_name INTO @column_name
END
CLOSE cur_name
DEALLOCATE cur_name
SET NOCOUNT OFF
错误:
Msg 911,级别 16,状态 4,第 24
行 数据库"从OHMPreStage选择前2个*"不存在。确保正确输入名称。
你只需要改变:
exec @test
自
exec (@test)
EXEC
用于执行存储过程,EXEC()
函数将动态字符串放在一起并执行它。
搜索带有"LIKE"的列时可能会遇到问题 这些列不是字符串列。
您应该在此处查看此问题的答案,它为您提供了一个脚本,用于扫描数据库中的所有表以查找特定字符串内容:
选择具有指定值的列名
只需替换搜索字符串"%~%",如果需要,请将搜索的表限制为所需的一个(或一组)表。