zoukankan      html  css  js  c++  java
  • SQL:Like 通配符及特殊用法Escape

    摘自:http://www.sqlstudy.com/sql_article.php?id=2008061601

    %:匹配零个及多个任意字符; _:与任意单字符匹配; []:匹配一个范围; [^]:排除一个范围

    SymbolMeaning
    like '5[%]' 5%
    like '[_]n' _n
    like '[a-cdf]' a, b, c, d, or f
    like '[-acdf]' -, a, c, d, or f
    like '[[]' [
    like ']' ]
    like 'abc[_]d%' abc_d and abc_de
    like 'abc[def]' abcd, abce, and abcf
    like '[^1-9]' 0
    like '[^1-9b-z]' 0, a

    对于字符串中出现的特殊字符:'%','[','[]', '_' 可以使用 '[]' 把它们包含起来, 这样在匹配模式(pattern)中,它们就被当作普通字符对待了。

    1. 用 like '[[]' 匹配特殊字符 '['

    select 1 where '[ABCDE' like '[[]%'

    2. 用 like ']' 匹配特殊字符 ']'

    select 1 where ']ABCDE' like ']%'

    3. 用 like '[[]]' 匹配特殊字符 '[]'

    select 1 where '[]ABCDE' like '[[]]%%'

    4. 用 like '[_]' 匹配特殊字符 '_'

    select 1 where '_ABCDE' like '[_]%'

    5. 用 like '[%]' 匹配特殊字符 '%'

    select 1 where 'ABC%DE' like 'ABC[%]DE'

    对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的 escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。

    select 1 where '^ABCDE' like '!^ABCDE' escape '!'
    select 1 where '-ABCDE' like '!-ABCDE' escape '!'
    select 1 where ']ABCDE' like '!]ABCDE' escape '!'
    
    select 1 where '%ABCDE' like '\%ABCDE' escape '\'
    select 1 where '%ABCDE' like '!%ABCDE' escape '!'
    select 1 where '%ABCDE' like '#%ABCDE' escape '#'
    select 1 where '%ABCDE' like '@%ABCDE' escape '@'
    
    select 1 where '[ABCDE' like '![ABCDE' escape '!'
    select 1 where ']ABCDE' like '!]ABCDE' escape '!'
    

    看出规律了吧,就是用 escape 后面紧跟着的字符来做转义字符。 escape 后面的字符相当于 C 语言字符串中的转义字符 '\'。

    最后,看一个更加复杂的匹配

    select 1 where '[^A-Z]ABCDE' like '\[\^A\-Z\]%' escape '\'




  • 相关阅读:
    [算法]统计排序(桶排序)
    [算法]使用bitmap高效进行矩阵运算
    [C++]搞清楚类中构造与析构的顺序
    [C++]关于友元的总结
    [mysql]视图(转)
    [mysql]存储过程(转)
    [C++]对象模型总结
    [mysql]Linux下C语言连接mysql
    [python]使用xml.dom读写XML文件
    Windows 10 64位操作系统 下安装、配置、启动、登录、连接测试oracle 11g
  • 原文地址:https://www.cnblogs.com/KeenLeung/p/2776297.html
Copyright © 2011-2022 走看看