KeenLeung

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

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

Symbol Meaning
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 \'\\'




分类:

技术点:

相关文章:

  • 2021-08-19
  • 2021-12-23
  • 2022-01-23
  • 2022-01-20
  • 2022-01-11
  • 2022-01-24
  • 2021-07-14
猜你喜欢
  • 2021-12-25
  • 2022-12-23
  • 2021-06-21
  • 2022-02-10
  • 2021-12-23
相关资源
相似解决方案