【问题标题】:How does % wildcard exactly work in sql when searching% 通配符在搜索时如何在 sql 中准确工作
【发布时间】:2016-07-02 08:05:33
【问题描述】:

我在 where 部分 'LIKE %Blabla%Another%' 中看到了一个类似这样的 select 语句,现在我自己尝试了一下,但我不清楚它是如何工作的。我很困惑的是中间的 %,我明白 '%Blabla Another%' 是如何工作的,但是用 % 作为空格的替代品,我很困惑。

【问题讨论】:

    标签: mysql sql select wildcard sql-like


    【解决方案1】:

    % 表示“任何字符序列,包括空字符”。所以LIKE '%Blabla%Another%'会匹配,例如'XYZBlablaABCAnotherPQR''BlablaAnother'' Blabla Another '

    【讨论】:

      【解决方案2】:

      以下是您可以使用的通配符列表以及一些示例。

      • %:替代零个或多个字符
      • _:单个字符的替代品
      • [charlist]:要匹配的字符集和范围
      • [!charlist]:仅匹配括号内未指定的字符

      以下 SQL 语句选择城市包含模式“es”的所有客户

      • SELECT * FROM Customers WHERE City LIKE '%es%'

      下面的 SQL 语句选择 City 以任意字符开头,后跟“erlin”的所有客户:

      • SELECT * FROM Customers WHERE City LIKE '_erlin'

      以下 SQL 语句选择城市以“b”、“s”或“p”开头的所有客户:

      • SELECT * FROM Customers WHERE City LIKE '[bsp]%'

      以下 SQL 语句选择城市不以“b”、“s”或“p”开头的所有客户:

      • SELECT * FROM Customers WHERE City LIKE '[!bsp]%'

      来源:http://www.w3schools.com/sql/sql_wildcards.asp

      【讨论】:

        【解决方案3】:

        % 表示任何(包括无)字符。

        如果你有一个字符串'abcdef',它会匹配例如'a%f',因为字符串以a和f开头和结尾。

        '%b%e%' 也将匹配,因为它表示任何带有 b 的字符串,甚至按顺序排列,但不一定彼此相邻

        【讨论】:

          【解决方案4】:

          使用 LIKE,您可以在模式中使用以下两个通配符:

          % 匹配任意数量的字符,甚至是零个字符。

          _ 只匹配一个字符。

          ©dev.mysql.com

          【讨论】:

            【解决方案5】:

            在 SQL 中,通配符与 SQL LIKE 运算符一起使用。

            sql %,_,[charlist],[^charlist] 中有通配符。

            % 通配符替代零个或多个字符。

            例如

             SELECT * FROM Customers
                WHERE City LIKE '%es%';
            

            这将选择城市包含模式“es”的所有客户。

            所以在这里您可以看到 % 通配符充当空字符或空格字符。

            【讨论】:

              猜你喜欢
              • 2010-09-05
              • 2013-05-02
              • 1970-01-01
              • 1970-01-01
              • 2018-05-15
              • 2020-05-08
              • 2012-08-01
              • 2011-07-14
              • 1970-01-01
              相关资源
              最近更新 更多