关于ESCAPE 特殊字符, MySQL 和 SQL Server 的一个区别

MySQL 默认使用’\’作为转义符, 但SQL Server不用, SQL Server 有自己的一套方法:
1. 将其放到[]内:
SELECT * FROM table WHERE f LIKE N’%[%]%’
SELECT * FROM table WHERE f LIKE N’%[_]%’
那如果要查询'[‘本身, 怎么办呢?
SELECT * FROM table WHERE f LIKE N’%[[]%’
即可.
那要查’]’呢? 直接使用即可,因为很显然这里不会造成歧义:
SELECT * FROM table WHERE f LIKE N’%]%’
查询既包含'[‘又包含’]’,该如何呢?例如要查询包含”[abc]”的记录, 很显然’%[abc]%’不行!
据说双重[[]]即可!(未用过,不知道到底对不对)
SELECT * FROM table WHERE f LIKE N’%[[abc]]%’
2. 使用 ESCAPE 关键字:
总会有用不到的字符吧, 例如我经常这样用:
SELECT * FROM table WHERE f LIKE N’%[abc]%’ ESCAPE ‘'
前提是该字段从不使用字符'
‘, 如果这条不能保证, 总能找到一个不用的吧. 全用到了? 那另想它法吧. 我还从未遇到过呐,遇到时再去想办法吧.
3. MySQL 由于可以使用’\’作为转义符, 因此可查询回车换行等字符:
SELECT * FROM MySqlTable WHERE f LIKE ‘%\r\n%’
SQL SERVER 傻眼了, 怎么办呢?
SELECT * FROM SqlServerTable WHERE f LIKE ‘%’+NCHAR(0x0D)+NCHAR(0x0A)+’%’
好麻烦啊. 不知道有没有更好的方法, 求教.

Leave a Reply

Your email address will not be published. Required fields are marked *