0

我有这个查询:

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 字段 Title 中搜索并显示包含 LIKE 中指定的单词的所有行。

我没有收到任何错误,但字段标题包含一行带有以下字符串“Samsung Galaxy Axiom R830”,我的查询没有返回它(它应该返回)。

这是我最初的问题,它适用于某些记录,但不适用于所有仅包含特定单词的 SQL SELECT LIKE

4

3 回答 3

3

可能是因为您正在寻找 " Samsung" 前后有一个空格,而字符串在 " " 之前没有空格Samsung吗?

于 2013-01-17T15:20:54.637 回答
2

如果标题为“Samsung Galaxy Axiom R830”,则以下条件不成立。

REPLACE(REPLACE(REPLACE(Title,' Samsung ',''),' Galaxy ',''),' Axiom ','') = ''

写入的替换将输出

SamsungAxiom R830

这将不匹配空白字符串。

如果您从替换中删除了空格,则会留下 R830(可能还有一些空格)。正如 Hellion 在他的评论中所说,这是一个要求“Samsung”、“Galaxy”和“Axiom”作为标题中唯一单词的查询。

于 2013-01-17T15:21:25.087 回答
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',''), ' ') = ''
于 2013-01-17T15:23:00.267 回答