SQL:Like子句中的转义字符

modico
SELECT * FROM tablename WHERE columnname LIKE '%abc%'
就象上面的一条语句,用到了 LIKE 子句进行条件查询。
LIKE 子句支持使用一种有限的规则表达式,里面可以包含4种类型的通配符。

通配符含义
%大于等于0字节长度的任意字符串,相当于大家熟悉的 *
_任意单个字符,相当于大家熟悉的 ?
[]在指定范围内的任意单个字符,例如([a-f],或者[abcdef])
[^]不在指定范围内的任意单个字符,例如([^a-f],或者[^abcdef])

那么如果我们要在columnname中搜索的字串本身就包含通配符或保留字符,应该怎么表示呢?
比如要搜索含有 5% 的字串,有两种方法:
  • 用 ESCAPE 关键字定义一个转义字符:
    WHERE columnname LIKE '%5/%%' ESCAPE '/'
    在这里最前和最后的%是通配符,中间那个放在/后的%被当作普通字符
  • 用[]括起来:

    表达式含义
    LIKE '5[%]'5%
    LIKE '5%'以5开头的字串
    LIKE '[_]n'_n
    LIKE '_n'an,in,on等等
    LIKE '[a-cdf]'a,b,c,d或f
    LIKE '[-acdf]'-,a,c,d或f
    LIKE '[[]'[
    LIKE ']']


欲求无限
立地成佛
.
有时候
交谈变得空洞
沉默却像沟通