sqlserver like 后面的通配符注意事项
2015-12-21 12:47
393 查看
sqlserver like 后面的通配符注意事项
1.%:匹配零个及多个任意字符;
2. _:与任意单字符匹配;
3.[]:匹配一个范围;
4.[^]:排除一个范围
以上4种是最基本的使用方法,但是字符串中出现的特殊字符:'%','[','[]', '_' 时,我们又该如何处理呢?
直接上代码:
总之:
1. 用 like '[[]' 匹配特殊字符 '['
2. 用 like ']' 匹配特殊字符 ']'
3. 用 like '[[]]' 匹配特殊字符 '[]'
4. 用 like '[_]' 匹配特殊字符 '_'
5. 用 like '[%]' 匹配特殊字符 '%'
对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。
例如:
可是不要忘了还有转义符自身,万一用户输入转义符的话,
以上的处理就会发生SQL错误。所以也必须对转义符进行变换。变换方法就是将[/]转换为[//]
还有我们的引号(')
1.%:匹配零个及多个任意字符;
2. _:与任意单字符匹配;
3.[]:匹配一个范围;
4.[^]:排除一个范围
以上4种是最基本的使用方法,但是字符串中出现的特殊字符:'%','[','[]', '_' 时,我们又该如何处理呢?
直接上代码:
GO CREATE TABLE #TEMP( VAL NVARCHAR(100) ) GO INSERT INTO #TEMP VALUES('关于[中国]的文件') --(想要的数据) INSERT INTO #TEMP VALUES('关于[日本]的文件') INSERT INTO #TEMP VALUES('T_T的相关文件') --(想要的数据) INSERT INTO #TEMP VALUES('TMT的相关文件') INSERT INTO #TEMP VALUES('增长%50') --(想要的数据) INSERT INTO #TEMP VALUES('增长%60') --(想要的数据) INSERT INTO #TEMP VALUES('增长5倍') INSERT INTO #TEMP VALUES('增长6倍') INSERT INTO #TEMP VALUES('你好[]') --(想要的数据) INSERT INTO #TEMP VALUES('你好x') DROP TABLE #TEMP GO SELECT * FROM #TEMP WHERE VAL LIKE '关于[中国]%' SELECT * FROM #TEMP WHERE VAL LIKE '关于[[]中国]%' --这个才是我们想要的sql SELECT * FROM #TEMP WHERE VAL LIKE 'T_T%' SELECT * FROM #TEMP WHERE VAL LIKE 'T[_]T%' --这个才是我们想要的sql SELECT * FROM #TEMP WHERE VAL LIKE '增长%' SELECT * FROM #TEMP WHERE VAL LIKE '增长[%]%' --这个才是我们想要的sql,增长百分比的结果 SELECT * FROM #TEMP WHERE VAL LIKE '你好[]' SELECT * FROM #TEMP WHERE VAL LIKE '你好[[]]' --这个才是我们想要的sql
总之:
1. 用 like '[[]' 匹配特殊字符 '['
2. 用 like ']' 匹配特殊字符 ']'
3. 用 like '[[]]' 匹配特殊字符 '[]'
4. 用 like '[_]' 匹配特殊字符 '_'
5. 用 like '[%]' 匹配特殊字符 '%'
对于其他的特殊字符:'^', '-', ']' 因为它们本身在包含在 '[]' 中使用,所以需要用另外的方式来转义,于是就引入了 like 中的escape 子句,另外值得注意的是:escape 可以转义所有的特殊字符。
例如:
--可以让我们的一些关键字 进行转义滴呀 SELECT * FROM #TEMP WHERE VAL LIKE '你好/[/]' ESCAPE '/'
可是不要忘了还有转义符自身,万一用户输入转义符的话,
以上的处理就会发生SQL错误。所以也必须对转义符进行变换。变换方法就是将[/]转换为[//]
还有我们的引号(')
INSERT INTO #TEMP VALUES('"你好"') INSERT INTO #TEMP VALUES('''-------''') SELECT * FROM #TEMP WHERE VAL LIKE '"你%' SELECT * FROM #TEMP WHERE VAL LIKE '''-%''' --三个' 相当于一个’ 最好使用 "
相关文章推荐
- 红帽redis安装和介绍
- 实现多条件查询 匹配数据库字段中多个数据
- sqlsever 浅析存储过程 存储过程基础知识
- mysql 5.7安装
- Oracle自动启动改为手动启动(以免不用时占内存)
- MySQL数据库之多表操作
- SQL SERVER 内存学习系列(二)-DMV查看内存信息
- 关于mysql管理事务处理
- Sqlserver 中编写脚本时的一些限制
- Redis入门之 redis set集合的操作
- postgresql9.4新特性jsonb学习-update更新操作
- MariaDB Galera Cluster with HA Proxy and Keepalived on Cents 6
- redis之哈希类型(hash)
- 思路随笔 关于题库和组卷功能的优化反思
- 事件流处理(Event Stream Processor)与数据库对比
- oracle_空值判断
- 查询mysql当前连接数
- mysql修改字符集位utf-8使其和操作数据库连接字符程序统一
- mysql数据库中锁表和所行
- Memcached安装