代码之家  ›  专栏  ›  技术社区  ›  Eldon Hipolito

搜索时,%通配符在sql中到底是如何工作的

  •  1
  • Eldon Hipolito  · 技术社区  · 10 年前

    我在where部分“like%Blabla%Another%”中看到了类似这样的select语句,现在我自己尝试了一下,但我不清楚它是如何工作的。我感到困惑的是中间的%,我理解''%Blabla Another%'是如何工作的,但用%代替空格,我感到困惑。

    5 回复  |  直到 10 年前
        1
  •  2
  •   Mureinik    10 年前

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

        2
  •  0
  •   Sven Tore    10 年前

    %指任何(包括无)字符。

    如果您有一个字符串“abcdef”,它将匹配,例如“a%f”,因为该字符串以a和f开头和结尾。

    “%b%e%”也会匹配,因为它表示任何带b的字符串,甚至按此顺序,但不一定相邻

        3
  •  0
  •   vladkras    10 年前

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

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

    _只匹配一个字符。

    dev.mysql.com

        4
  •  0
  •   Al Ameen    10 年前

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

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

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

    例如

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

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

    因此,在这里您可以看到%通配符作为空字符或空格字符。

        5
  •  0
  •   Fabio Widmer    10 年前

    这里是您可以使用的通配符列表,下面是一些示例。

    • % :零个或多个字符的替换
    • _ :单个字符的替换
    • [查尔斯特] :要匹配的字符集和范围
    • [!查尔斯特] :仅匹配括号内未指定的字符

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

    • 从城市喜欢“%s%”的客户中选择*

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

    • 从城市喜欢“_erlin”的客户中选择*

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

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

    • 从城市喜欢“[!bsp]%”的客户中选择*

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