SQL SELECT字段包含(单词)不起作用

时间:2013-01-17 15:18:34

标签: sql select sql-like

我有这个问题:

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

3 个答案:

答案 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',''), ' ') = ''