【发布时间】:2018-08-10 19:19:40
【问题描述】:
我有一个存储过程,它通过传递给varchar 的字符串搜索列上的表。
这可行,返回具有正确 ING_LOC_DESCRIPTION 的特定记录
DECLARE @strSearch VARCHAR(500)
SET @strSearch = 'Care1st LETTER Location'
SELECT TOP 10 ING_LOC_DESCRIPTION
FROM [CDRS].[ING_LOC_TRANS_MASTER]
WHERE [ING_LOC_DESCRIPTION] LIKE '%' + @strSearch + '%'
ORDER BY [ING_LOC_ID]
这不起作用返回由ING_LOC_ID排序的所有记录的前十个结果:
DECLARE @strSearch VARCHAR(500)
SET @strSearch = '[{"WorkFlowID":"MoveFile"}]'
SELECT TOP 10 ING_LOC_DESCRIPTION
FROM [CDRS].[ING_LOC_TRANS_MASTER]
WHERE [ING_LOC_DESCRIPTION] LIKE '%' + @strSearch + '%'
ORDER BY [ING_LOC_ID]
这些字符 [, {, ", :, }, ] 在 varchar 中是否无效?它被解释为 2 个字符串吗?还是 LIKE 关键字有问题?
字符串赋值似乎没问题,因为
DECLARE @strSearch VARCHAR(500)
SET @strSearch = '[{"WorkFlowID":"MoveFile"}]'
SELECT @strSearch
返回
[{"WorkFlowID":"MoveFile"}]
不幸的是
DECLARE @strSearch VARCHAR(500)
SET @strSearch = '[{"WorkFlowID":"MoveFile"}]'
SELECT @strSearch LIKE '[{"WorkFlowID":"MoveFile"}]'
没有像我希望的那样返回真或假,它返回一个错误
消息 156,第 15 级,状态 1,第 3 行
关键字“LIKE”附近的语法不正确
我认为LIKE 只能在WHERE 子句中使用,所以我认为使用LIKE 不会有问题。
【问题讨论】:
标签: sql sql-server tsql sql-like