搜索时 % 通配符如何在 sql 中准确工作

How does % wildcard exactly work in sql when searching

我在'LIKE %Blabla%Another%'的where部分看到了一个select这样的语句,现在我自己试了一下,不太明白它是如何工作的。我感到困惑的是中间的 %,我了解“%Blabla Another%”的工作原理,但是用 % 代替 space,我感到困惑。

% 表示 "any sequence of characters, including an empty one"。所以 LIKE '%Blabla%Another%' 将匹配,例如 'XYZBlablaABCAnotherPQR''BlablaAnother'' Blabla Another '

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

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

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

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

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

_ 正好匹配一个字符。

© dev.mysql.com

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

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

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

例如

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

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

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

下面列出了您可以使用的通配符以及一些示例。

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

以下 SQL 语句选择城市包含模式 "es"

的所有客户
  • SELECT * 来自像“%es%”这样的城市的客户

以下 SQL 语句选择城市以任意字符开头,后跟 "erlin" 的所有客户:

  • SELECT * 来自像“_erlin”这样的城市的客户

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

  • SELECT * 来自城市喜欢'[bsp]%'的客户

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

  • SELECT * 来自城市 LIKE '[!bsp]%'
  • 的客户

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