Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 11222|回复: 9

[已解决]SQL基础:使用Like实现模糊查询

[复制链接]
发表于 2011-11-2 17:08 | 显示全部楼层 |阅读模式
本帖最后由 爱疯 于 2011-11-2 17:11 编辑

参考:http://www.cnblogs.com/lidingbin/archive/2010/09/23/1833380.html

十 使用Like实现模糊查询
基本语法:select * from table_Name where column like (匹配条件)
说明:
“%”匹配任意长度的(长度可以为0)字符串,
“_”匹配任意单个字符,
“[]”:匹配所给定范围或集合中的任意单个字符,
“[^]”匹配所给定的不在所给定的集合或范围中的任意单个字符,通配符或字符串必须用单引号括起来

示例:查询所有姓李的同学地信息
Select * from Student_TBL where SName like ‘李%’
查询所有学生名字中第二个字为“冰”的同学的信息
Select * from Student_TBL where SName like ‘_冰%’
查询所有编号中含有’e,t,y’字符的班级信息
Select * from Class_TBL where CNO like ‘[e,t,y]’
查询所有编号中不含有’e,t,y’字符的班级信息
Select * from Class_TBL where CNO like ‘[^e,t,y]’














其中第10中的最后1个示例。为此我对照举了下例:


Select * from [数据$] where 姓名 like '[^张,燕]'

按说这样是查询姓名字段中,不含有张字,但含有燕字的,所有记录。
请问:为什么没产生结果呢?应该如何修改,谢谢!
SQL基础语句20条.rar (11.36 KB, 下载次数: 110)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2011-11-2 17:15 | 显示全部楼层
本帖最后由 mxg825 于 2011-11-2 17:17 编辑

第一个不含‘张’,第二个以上含‘燕’!
Select * from [数据$] where 姓名 like '[!张]%[燕]%'
回复

使用道具 举报

发表于 2011-11-2 17:23 | 显示全部楼层
一定要查 不含 【张】 但含【燕 】
Select * from [数据$] where  姓名 not like '%张%' and 姓名 like '%燕%'


关于不含问题可以看这个贴!【简述vba sql中的like】
http://www.excelpx.com/forum.php ... 1&fromuid=62147
回复

使用道具 举报

 楼主| 发表于 2011-11-2 17:26 | 显示全部楼层
谢谢825!
2楼是可以解决1楼问题。

为什么套用1楼的方法不行呀?
回复

使用道具 举报

发表于 2011-11-2 17:35 | 显示全部楼层
本帖最后由 mxg825 于 2011-11-2 17:40 编辑
爱疯 发表于 2011-11-2 17:26
谢谢825!
2楼是可以解决1楼问题。


一楼的写法是!
姓名 不是 张,不是燕的!数据!(姓名是一个字的)
未命名.jpg

点评

谢谢,这楼理解了  发表于 2011-11-2 17:42
回复

使用道具 举报

 楼主| 发表于 2011-11-2 17:40 | 显示全部楼层
mxg825 发表于 2011-11-2 17:35
一楼的写法是!
姓名 不是 张,不是燕的!数据!

Select * from [数据$] where 姓名 like '[^张%,%燕%]'


为什么我这样得不到数据中9,10行记录呢
回复

使用道具 举报

发表于 2011-11-2 17:53 | 显示全部楼层
爱疯 发表于 2011-11-2 17:40
Select * from [数据$] where 姓名 like '[^张%,%燕%]'

不带这样写法的!中括号是表示 字符串同一个位置的一个字符!
而不能是字符串的多个位置的不同值!
回复

使用道具 举报

发表于 2011-11-2 17:56 | 显示全部楼层    本楼为最佳答案   
不知明白没有!
% 必须在【】外面!
回复

使用道具 举报

 楼主| 发表于 2011-11-2 17:59 | 显示全部楼层
mxg825 发表于 2011-11-2 17:53
不带这样写法的!中括号是表示 字符串同一个位置的一个字符!
而不能是字符串的多个位置的不同值!

“[]”:匹配所给定范围或集合中的任意单个字符

谢谢825,又去仔细看了1楼定义,明白了!

6楼虽然没报错,但如你所说%在[]里,也被无视,是无意义的。

因为我提供数据工作表里没有满足条件的记录,所以显示为空。
回复

使用道具 举报

发表于 2011-11-2 18:36 | 显示全部楼层
但如你所说%在[]里,也被无视,是无意义的。

应该不是无视,而是当查找[符号%]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-14 10:28 , Processed in 0.284736 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表