SQL - 查找所有以某个短语开头的单词

6

我的MySQL数据库中有很多书。我正在寻找书头中特定的词语。例如,我可以找到每个以单词“dan”开头的书头:

SELECT * FROM books WHERE header LIKE 'dan%';

如何在以特定短语开头的标题中查找单词呢?

提前感谢。

2个回答

9

这是一个快速而简单的技巧:以 dan 开头的单词可以出现在 header 的开头或者空格后面,因此:

SELECT * FROM books WHERE header LIKE 'dan%' OR header like '% dan%';

为什么不先使用 trim() 然后再使用 like?因为 header like '% dan%' 在逻辑上意味着单词 dan 可以出现在标题的任何位置,而不一定是在开头。 - Rahul
@Rahul,因为我试图避免将标题拆分为单独的单词。您如何使用trim来处理像“Rahul and dan are browsing StackOverflow”这样的标题?在'% dan%'中dan前面的空格验证它是一个单词的开头。 - Mureinik
1
有道理..啊!! 我明白了。OP把问题表述错了。它应该是“检查dan是否为单独的单词”+1。 - Rahul

2
以下是一个简化版的逻辑,它在标题开头放置一个空格:
SELECT *
FROM books
WHERE ' ' || header LIKE ' dan%';

唯一的问题是,字符串连接取决于数据库,而问题没有提到数据库。因此,它也可能是:

WHERE ' ' + header LIKE ' dan%';

或者

WHERE CONCAT(' ', header) LIKE ' dan%';

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接