SQL:Like子句中的转义字符
SELECT * FROM tablename WHERE columnname LIKE '%abc%'
就象上面的一条语句,用到了 LIKE 子句进行条件查询。
LIKE 子句支持使用一种有限的规则表达式,里面可以包含4种类型的通配符。
那么如果我们要在columnname中搜索的字串本身就包含通配符或保留字符,应该怎么表示呢?
比如要搜索含有 5% 的字串,有两种方法:
就象上面的一条语句,用到了 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 ']' ]
欲求无限
立地成佛
.
有时候
交谈变得空洞
沉默却像沟通