【问题标题】:SQL like search substring starts with类似 SQL 的搜索子字符串以
【发布时间】:2014-10-02 17:45:54
【问题描述】:

我的 MySQL 数据库中有很多书。我正在寻找特定的书名。例如,我知道如何找到每个标题都以“dan”开头的:

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

但是如何在标题中找到以某个短语开头的单词(子字符串)?

提前致谢。

【问题讨论】:

    标签: mysql sql search sql-like


    【解决方案1】:

    稍微简化一下是下面的逻辑,在header的开头放了一个空格:

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

    唯一的问题是连接字符串取决于数据库,并且问题没有提到数据库。所以也可能是:

    WHERE ' ' + header LIKE ' dan%';
    

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

    【讨论】:

      【解决方案2】:

      这是一个快速而肮脏的技巧:以dan 开头的单词可以在header 的开头或在空格之后,所以:

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

      【讨论】:

      • 为什么不先使用trim(),然后使用like?因为header like '% dan%'在逻辑上意味着单词dan可以出现在标题中的任何位置,而不必出现在开头。
      • @Rahul 因为我试图避免将标题拆分为单独的单词。你将如何使用trim 来处理像Rahul and dan are browsing StackOverflow 这样的标题? '% dan%' 中 dan 之前的空格验证它是单词的开头。
      • 有道理..啊!!我现在明白了。 OP错误地提出了这个问题。应该是check if dan is a separate word +1
      猜你喜欢
      • 2013-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-15
      • 1970-01-01
      • 2013-09-23
      • 1970-01-01
      • 2017-04-07
      • 2021-07-24
      相关资源
      最近更新 更多