黑马程序员技术交流社区

标题: 怪事,我的sql遇到问题了 [打印本页]

作者: 胡章诚    时间: 2013-6-13 08:17
标题: 怪事,我的sql遇到问题了
本帖最后由 胡章诚 于 2013-6-13 21:44 编辑

我做模糊查询的时候,用“左%”查出来的有数据,但是用‘左__’却没有数据,
sName=‘左勇杰’,有谁知道这是怎么回事吗?         
select * from Student where sName like'左__';

2.jpg (47.2 KB, 下载次数: 0)

2.jpg

作者: 许庭洲    时间: 2013-6-13 08:44
1.进行单字符匹配的通配符为半角下划线"_", 它匹配单个出现的字符;
   例如: 通配符表达式"b_d"匹配第一个字符为b, 第二个字符为任意字符,第三个字符为d的字符串;
2. 进行多字符匹配的通配符为半角百分号"%", 它匹配任意次数(零或多个)出现的任意字符;
   例如:通配符表达式"%h"匹配以"h"开头,任意长度的字符串, "h","herry","hj"都能匹配这个表达式.
作者: ljh4282158    时间: 2013-6-13 08:46
% 任意长度       —下划线,代表一个长度                 比如   张 _    查出来的只有姓张的,两个字的名字    张% 可以查出来 张三三   张斯斯四  所有姓张的人的名字
作者: 胡章诚    时间: 2013-6-13 08:54
许庭洲 发表于 2013-6-13 08:44
1.进行单字符匹配的通配符为半角下划线"_", 它匹配单个出现的字符;
   例如: 通配符表达式"b_d"匹配第一个 ...

我加了两个“_”,所以  左__ 应该可以查询出  ‘左勇杰’啊,但是没有查到
作者: 许庭洲    时间: 2013-6-13 09:01
胡章诚 发表于 2013-6-13 08:54
我加了两个“_”,所以  左__ 应该可以查询出  ‘左勇杰’啊,但是没有查到 ...

最好采用多字符匹配的通配符为半角百分号"%"匹配, select * from Student where sName like '左%';
作者: 李晶晶    时间: 2013-6-13 09:03
本帖最后由 李晶晶 于 2013-6-13 09:05 编辑

模糊查询有两个通配符匹配:一个是单字符“-”下划线,它匹配单个出现的字符。一个是多字符“%”百分号,它匹配任意字数(零个或多个)出现的字符。
‘左_’只是匹配出姓“左”的后面是单个名字的,例如“左三”,“左四”,如果想查出“左思勇”这样的,除了用‘左%’,用'左__'左后边两个下划线,也是能查出来的.如果楼主用'左__'左后边两个下划线没有查出来,你检查一下你输入的下划线是否是英文输入法下的“ _”.


作者: 胡章诚    时间: 2013-6-13 09:08
李晶晶 发表于 2013-6-13 09:03
模糊查询有两个通配符匹配:一个是单字符“-”下划线,它匹配单个出现的字符。一个是多字符“%”百分号,它 ...

不知道什么情况,还是查询不出来,下划线貌似只能在英文输入法的时候输入吧,呵呵
作者: 李晶晶    时间: 2013-6-13 09:53
胡章诚 发表于 2013-6-13 09:08
不知道什么情况,还是查询不出来,下划线貌似只能在英文输入法的时候输入吧,呵呵 ...

;P就是就是 嘿嘿  那就不清楚了 。
作者: popoluno    时间: 2013-6-13 10:14
进行单字符匹配时使用通配符半角下划线"_", 进行多字符匹配最好使用通配符为半角百分号"%"!

作者: 关关雎鸠    时间: 2013-6-13 13:46
还是老老实实的用"左%"吧。。。
作者: lyn    时间: 2013-6-13 13:53
看了楼主的,我也试了一下,发现是可以,原因就是不清楚了,坐等大神

捕获.PNG (11.86 KB, 下载次数: 0)

捕获.PNG

作者: 胡章诚    时间: 2013-6-13 14:06
好吧,好吧,我找到原因了,哈哈哈哈哈,我把数据类型设置为nchar(10),数据库将没有占满的长度补成空格了,所以用下划线是查不出来的,必须用  %

麻烦各位了,呵呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2