可是这个数据: [title in Japanese] ,用 like '%[%' 就查不出来,但是用 like '%]%' 就能查出来,为什么?
用 LIKE '%[[]%' 也没有问题,能查出来,我只是想知道,前两个的区别是什么。。。
我在SQL server2000的联机丛书中查了一下,好像没有看你这种用法的.
[ ]指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。
WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
使用 [ ] 通配符
下例查找名字为 Cheryl 或 Sheryl 的作者。
USE pubs
GO
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_fname LIKE '[CS]heryl'
ORDER BY au_lname ASC, au_fname ASC
GO
下例查找姓为 Carson、Carsen、Karson 或 Karsen 的作者所在的行。
USE pubs
GO
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE '[CK]ars[eo]n'
ORDER BY au_lname ASC, au_fname ASC
GO
看来,方括号中得指定字符追问
[ ]指定范围 ([a-f]) 或集合 ([abcdef]) 中的任何单个字符。
WHERE au_lname LIKE '[C-P]arsen' 将查找以arsen 结尾且以介于 C 与 P 之间的任何单个字符开始的作者姓氏,例如,Carsen、Larsen、Karsen 等。
使用 [ ] 通配符
下例查找名字为 Cheryl 或 Sheryl 的作者。
USE pubs
GO
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_fname LIKE '[CS]heryl'
ORDER BY au_lname ASC, au_fname ASC
GO
下例查找姓为 Carson、Carsen、Karson 或 Karsen 的作者所在的行。
USE pubs
GO
SELECT au_lname, au_fname, phone
FROM authors
WHERE au_lname LIKE '[CK]ars[eo]n'
ORDER BY au_lname ASC, au_fname ASC
GO
看来,方括号中得指定字符追问
这个我知道。但是我现在要查的是某一字段中的数据含有方括号的数据,比如,一条数据是:title in Japanese ,另一条数据是:[title in Japanese] ,想要查找出:[title in Japanese] ,用 like '%]%' 能找出来,用 like '%[%' 找不出来。
追答用这个的时候like '%[%',去掉前面的%号,试试
追问不行
追答再用'%[[]%'试试
追问这个是可以的,我已经在问题补充里说了。只是想知道那两个会有不一样的结果,原因是什么。
追答既然这种办法可以,那就清楚了,你用%[%为什么查不出来,SQL认为你没有把通本符[]写完整,用%]%可以查出来,是因为SQL把]看成是一个字符,而不是通配符.是吧?
追问既然sql认为没有把通配符写完整,那是按什么进行处理的?或者,为什么不报错什么的?
追答模糊查询,如有问题,没有数据返回就是了,一般是不会报错的.你自己可以故意制造一个错误试试嘛,我经常遇到查询没有数据返回的情况,也不报错,最后一查SQL语句有问题.
温馨提示:答案为网友推荐,仅供参考