【问题标题】:MYSQL Select where string contains keywordsMYSQL 选择字符串包含关键字的位置
【发布时间】:2020-06-03 14:15:50
【问题描述】:

所以,我一直在进行一些挖掘,但我真的找不到具体的东西。假设我有一个名为 products 的表,有 2 列:product_namevendor

product_name  |  vendor
Item A        | Computer Mania
Item B        | Incredible Connection
Item C        | Computer Mania

所以,现在假设我不记得如何拼写computer,我说,好吧,我记得名字以co 开头,以er 结尾,然后是mania

如何在 WHERE 中使用这些条件构建 SELECT 查询?我不知道该怎么做。

这是我尝试过的: SELECT * FROM products WHERE vendor_name LIKE '%co%';

但是,这也会返回 Incredible Connection,这是我不想要的。

【问题讨论】:

    标签: mysql sql wildcard sql-like


    【解决方案1】:

    我会在这里使用REGEXP

    SELECT *
    FROM yourTable
    WNERE vendor REGEXP '^co[a-z]*er mania';
    

    此正则表达式模式表示要查找名称的第一个单词以co 开头并以er 结尾,然后是单词mania 的所有供应商。

    【讨论】:

      【解决方案2】:

      您必须正确使用 SQL 通配符。

      % 通配符表示零个或多个字符。因此,如果您使用%co%,它将在供应商列中搜索字符串co。问题中给定示例中的vendor 列在每一行中都有字符串co

      如果您说它以co 开头并以er mania 结尾,则将通配符用作vendor like 'co%er mania'。这将在vendor 列中搜索以co 开头并以er mania 结尾的值

      select * from products where vendor like 'co%er mania';
      

      请参阅this 以了解有关 SQL 通配符的更多信息。

      【讨论】:

        【解决方案3】:

        对于您的示例,您将使用 like:

        where vendor_name like 'co%er mania'
        

        您可能也希望使这种情况独立,尽管这是 MySQL 中的默认设置。

        【讨论】:

          猜你喜欢
          • 2016-03-01
          • 2021-01-30
          • 2011-08-22
          • 2015-11-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-11-21
          • 2016-02-11
          相关资源
          最近更新 更多