SELECT name
FROM TV
WHERE name LIKE '%Day%'
AND name NOT LIKE '%Days%'
AND name NOT LIKE '%Hayday%'
AND name NOT LIKE '%Payday%'
AND name NOT LIKE '%Doomsday%'
如何合并最近的3个查询,以便除了单独的单词之外,单词“ day”不包含在任何单词中?
答案 0 :(得分:3)
空格是字符串的一部分...假设您正在短语中搜索, 或在开始或结束时。这是一个简单的案例解决方案,假设没有标点符号,只有文本和空格。 那么解决方案应该是这样的:
SELECT name
FROM Track
WHERE name (name LIKE '% Day %') OR (name LIKE '% Day') OR (name LIKE 'Day %')
;
答案 1 :(得分:3)
如果您使用的是MySQL,则可以使用RLIKE (REGEXP)通过创建带有单词边界的表达式来仅与单词本身进行匹配:
SELECT name
FROM TV
WHERE name REGEXP '[[:<:]]Day[[:>:]]'
请注意,REGEXP
区分大小写,因此也将与“ day”一词匹配。
如果您使用的是SQLite,则可能已经安装了REGEXP
,在这种情况下,此解决方案也应适用。如果没有,this question会指导您如何安装它。
答案 2 :(得分:0)
在您的查询中,您可以直接使用如下字符串代替“ Like”关键字
“ where name ='time'
答案 3 :(得分:0)
您可以使用FIND_IN_SET
SELECT name
FROM Track
WHERE name LIKE '%Time%'
AND FIND_IN_SET(name,"Times,Playtime,Summertime,Wartime")<0
答案 4 :(得分:0)
假设“单独”是指被空格包围,那么最简单的方法可能是:
SELECT name
FROM TV
WHERE ' ' || name || ' ' LIKE '% Day %';
(或者您的数据库执行字符串连接。)
如果“单独”仅表示单词边界,那么正则表达式是最好的方法。