【发布时间】:2020-05-22 00:25:29
【问题描述】:
我想在整个表中搜索,其中字符串为“NA”、“na”或“N/A”。 实际上,该值应该是“n/a”,但被不同的部门错误地放置为“NA”、“na”或“N/A”。 我使用了以下代码。但问题是,它也返回了“n/a”的所有值。 我认为 'COLLATE Latin1_General_CS_AS NOT LIKE '%n/a' 可以在代码中的某处使用。 但我迷路了,找不到出路。 还有一种方法可以为变量@stringtofind 放置三个值,以便我可以同时搜索 N/A、na 和 NA? 谢谢和问候。
-妈妈
'''DECLARE
@stringToFind VARCHAR(100) = 'N/A',
@schema sysname = 'dbo',
@table sysname = 'SourceToTargetMapping'
BEGIN TRY
DECLARE @sqlCommand varchar(max) = 'SELECT * FROM [' + @schema + '].[' + @table + '] WHERE '
SELECT @sqlCommand = @sqlCommand + '[' + COLUMN_NAME + '] LIKE ''' + @stringToFind + ''' OR '
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = @schema
AND TABLE_NAME = @table
AND DATA_TYPE IN ('char','nchar','ntext','nvarchar','text','varchar')
SET @sqlCommand = left(@sqlCommand,len(@sqlCommand)-3)
EXEC (@sqlCommand)
PRINT @sqlCommand
END TRY
BEGIN CATCH
PRINT 'There was an error. Check to make sure object exists.'
PRINT error_message()
END CATCH '''
【问题讨论】:
-
你的数据库是什么?
标签: sql try-catch sqlcommand sql-scripts