sql中,[]是通配符

可是这个数据: [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

看来,方括号中得指定字符追问

这个我知道。但是我现在要查的是某一字段中的数据含有方括号的数据,比如,一条数据是:title in Japanese ,另一条数据是:[title in Japanese] ,想要查找出:[title in Japanese] ,用 like '%]%' 能找出来,用 like '%[%' 找不出来。

追答

用这个的时候like '%[%',去掉前面的%号,试试

追问

不行

追答

再用'%[[]%'试试

追问

这个是可以的,我已经在问题补充里说了。只是想知道那两个会有不一样的结果,原因是什么。

追答

既然这种办法可以,那就清楚了,你用%[%为什么查不出来,SQL认为你没有把通本符[]写完整,用%]%可以查出来,是因为SQL把]看成是一个字符,而不是通配符.是吧?

追问

既然sql认为没有把通配符写完整,那是按什么进行处理的?或者,为什么不报错什么的?

追答

模糊查询,如有问题,没有数据返回就是了,一般是不会报错的.你自己可以故意制造一个错误试试嘛,我经常遇到查询没有数据返回的情况,也不报错,最后一查SQL语句有问题.

温馨提示:答案为网友推荐,仅供参考

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网