SQL SELECT 字段包含(单词)不起作用
Posted
技术标签:
【中文标题】SQL SELECT 字段包含(单词)不起作用【英文标题】:SQL SELECT field contains(words) does not work 【发布时间】:2013-01-01 04:17:48 【问题描述】:我有这个问题:
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 containing only specific words
【问题讨论】:
这不匹配,因为您要的是 `Samsung`。 您的最终条件不是说字符串只能包含 Samsung、Galaxy 和 Axiom 吗?你给的字符串会剩下'R830'。 在 WHERE - SQL 基础中必须使用 OR 而不是 AND。 @Art - 这不是这里的实际问题。如果他想确保一行中的给定列包含所有这些单词,他将需要AND
。他真正的问题是一些比较字符串被激怒了。
【参考方案1】:
可能是因为您正在寻找“Samsung
”前后有一个空格,而字符串在“Samsung
”之前没有空格?
【讨论】:
不,不是这样。我已将查询修改为如下所示,但它仍然无法正常工作。 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,'三星',''),'银河',''),'公理','') = '' 嗯,就是这样。您正在使用AND
;当你在寻找_Samsung_
时,你怎么能指望找到Samsung
?
请看这个问题,我从这里得到了我的查询***.com/questions/14290857/…【参考方案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',''), ' ') = ''
【讨论】:
【参考方案3】:如果标题为“Samsung Galaxy Axiom R830”,则以下条件不成立。
REPLACE(REPLACE(REPLACE(Title,' Samsung ',''),' Galaxy ',''),' Axiom ','') = ''
写入的替换将输出
SamsungAxiom R830
这将不匹配空白字符串。
如果您从替换中删除了空格,则会留下 R830(可能还有一些空格)。正如 Hellion 在他的评论中所说,这是一个要求“Samsung”、“Galaxy”和“Axiom”作为标题中唯一单词的查询。
【讨论】:
但它适用于一些记录,我在另一个 *** 问题中得到了这个查询以上是关于SQL SELECT 字段包含(单词)不起作用的主要内容,如果未能解决你的问题,请参考以下文章
mysql中order by 排序用asc和desc不起作用怎么回事
解决 AutoMapper ProjectTo 不起作用的问题