我有这个问题:
SELECT *
FROM
(SELECT ' ' + REPLACE(Title,' ',' ') + ' ' AS Title
FROM MyTable) t
WHERE Title LIKE '% Samsung %'
AND Title LIKE '% Galaxy %'
AND Title LIKE '% Axiom %'
AND REPLACE(REPLACE(REPLACE(Title,' Samsung ',''),' Galaxy ',''), ' Axiom ','') = ''
此查询应在MyTable字段标题中搜索并显示包含LIKE中指定的单词的所有行。
我没有收到任何错误,但字段标题包含一行,其中包含以下字符串'Samsung Galaxy Axiom R830',我的查询不会返回它(它应该)。
这是我原来的问题,它适用于某些记录,但不适用于所有SQL SELECT LIKE containing only specific words
答案 0 :(得分:3)
可能是因为你正在寻找带有前后空格的“Samsung
”之后,字符串在“Samsung
”之前没有空格?
答案 1 :(得分:2)
如果标题是“Samsung Galaxy Axiom R830”,则以下情况将不属实。
REPLACE(REPLACE(REPLACE(Title,' Samsung ',''),' Galaxy ',''),' Axiom ','') = ''
替换为写入将输出
SamsungAxiom R830
这与空白字符串不匹配。
如果您从替换中删除了空格,那么您将留下R830(可能还有一些空格)。正如Hellion在评论中所说,这是一个查询,要求“三星”,“银河”和“Axiom”这两个词是你头衔中唯一的单词。
答案 2 :(得分:2)
你有空格。也许你想要这样的东西:
WHERE (Title LIKE '% Samsung %' or title like '%Samsung' or title like 'Samsung%')
AND (Title LIKE '% Galaxy %' or title like '%Galazy' or title like 'Galaxy%')
AND (Title LIKE '% Axiom %' or title like '%Axiom' or title like 'Axiom%')
AND replace(REPLACE(REPLACE(REPLACE(Title,'Samsung',''),'Galaxy',''), 'Axiom',''), ' ') = ''
实际上,正如我想的那样,我认为最后的替换就足够了:
where replace(REPLACE(REPLACE(REPLACE(Title,'Samsung',''),'Galaxy',''), 'Axiom',''), ' ') = ''