Server 2000新的Select 发现,没见过,请教....

来源:百度知道 编辑:UC知道 时间:2024/06/05 15:58:21
主要是后面的Where条件
1.
SELECT *
FROM File_Document INNER JOIN
Word_Document ON File_Document.文档夹ID = Word_Document.ID
WHERE (File_Document.文件编号 LIKE '%陕交质监%')
满足条件的全部查出,正常!
2.SELECT *
FROM File_Document INNER JOIN
Word_Document ON File_Document.文档夹ID = Word_Document.ID
WHERE (File_Document.文件编号 LIKE '%[1999]%')
满足条件的全部查出,正常!
3.SELECT *
FROM File_Document INNER JOIN
Word_Document ON File_Document.文档夹ID = Word_Document.ID
WHERE (File_Document.文件编号 LIKE '%陕交质监[1999]%')
为何没数据......?难道“[]”在做怪.....Help Me!
数据库里面File_Document.文件编号:陕交质监[1999]81号
陕交质监[1999]82号
陕交质监[1999]83号
........
楼上的回答:WHERE (File_Document.文件编号 LIKE '%陕交质监[1999]%' escape '[]')
但是报错,说Like谓词中指定了无效的转意字符‘[]’

帮你做个分析,解释下原因:
[]是通配符, LIKE '%陕交质监[1999]%' 的意思其实是指与'陕交质监1'或'陕交质监9'或'陕交质监9'或'陕交质监9'相似的数据。所以你自然搜索不到所要的数据。
再举个例:LIKE 'abc[def]' 就表示abcd、abce 和 abcf

解决方法:
1、你可以在where子句中用'%陕交质监_1999]%'试试。
2、也可以转换下通配符,用'%陕交质监[[]1999]%'试试。
3、还有就是用ESCAPE语句:LIKE '%陕交质监![1999]%' ESCAPE '!'

那是因为 '[]' 符号和'%' 或者'_' 一样也是通配符
你应该在后面加上escape
啊?我再看看
-------------------------------------------------
不好意思我原来搞错了,escape还是要用的,改成如下 ,测试通过的

WHERE (File_Document.文件编号 LIKE '%陕交质监\[1999]%' escape '\')