我在SQL Server 2012中使用LIKE
谓词进行了以下查询。它用%替换了空格。我在表中有两条记录。
DECLARE @MyTable TABLE (ITMEID INT, ITMDESC VARCHAR(100))
INSERT INTO @MyTable VALUES (1,'Healty and Alive r')
INSERT INTO @MyTable VALUES (2, 'A liver patient')
DECLARE @SearchCriteria VARCHAR(100)
SET @SearchCriteria = 'Alive'
SELECT *
FROM @MyTable
WHERE (ITMDESC LIKE '%'+REPLACE(@SearchCriteria,' ','%')+'%' ESCAPE '\')
我从朋友to consider multiple consequent white spaces as a single space
收到此查询。挑战是我没有看到任何参考。
这种方法有缺陷吗?
答案 0 :(得分:0)
REPLACE(@SearchCriteria,' ','%')
始终返回Alive
。
事实上,WHERE
子句将如下所示:WHERE (ITMDESC LIKE '%Alive%' ESCAPE '\')
第二行不符合它。
可能你想要这样的东西:
SELECT *
FROM @MyTable
WHERE (REPLACE(ITMDESC,' ','') LIKE '%'+@SearchCriteria+'%' ESCAPE '\')
答案 1 :(得分:0)
你可以使用如下
DECLARE @MyTable TABLE (ITMEID INT, ITMDESC VARCHAR(100))
INSERT INTO @MyTable VALUES (1,'Healty and Alive r')
INSERT INTO @MyTable VALUES (2, 'A liver patient')
ECLARE @SearchCriteria VARCHAR(100)
SET @SearchCriteria = 'Alive'
SELECT *
FROM @MyTable
WHERE (REPLACE(ITMDESC,' ','') LIKE '%'+@SearchCriteria+'%' ESCAPE '\')
它会根据需要返回两个记录
答案 2 :(得分:0)
最简单的解决方案是用一些名字替换所有空格,然后用一个空格替换该名字对象。
Select Replace(Replace(ItmDesc, ' ', '<z>'), '<z>', ' ')
From MyTable