ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > SQL in Excel > SQL中多个字符的匹配

SQL中多个字符的匹配

作者:绿色风 分类: 时间:2022-08-18 浏览:97
楼主
DJ_Soo
Q:如何查询"数据表"中单位为'支'或者'只'的数据?为何我写以下的语句是错的?(得到所有的单位)
  1. SELECT * FROM [数据表$] where 单位 like '只' or '支'
A:首先说明,上面的语句中存在错误,而错在哪里,我们等会儿来看,我们先写出三种正确答案:
1.
  1. Select * from [数据表$] where 单位 in('只','支')
2.
  1. Select * from [数据表$] where 单位='只' or 单位='支'
3.
  1. SELECT * FROM [数据表$] where 单位 like '[只支]'
in用法应该是最常用的多个字符匹配的用法.而如果要用or的时候,用第2种方法的时候要分别写:单位='只' or 单位='支'
而如果用like代替等于号"="也应该用这种方法单位 like '只' or 单位 like '支'
而第三种方法用了like '[只支]',实际上限制了只对单位长度为1的字符进行判断,其中也有"或"的存在(在[]中的两个字符间有"或"运算)
这样,我们转回头来看知道了开始写的语句是哪里出错了,但是为什么结果得到的是所有的单位呢?
其实既然知道了表达有误,我们就知道刚才的语句是可以拆分开的了:
SELECT * FROM [数据表$] where 单位 like '只' or '支'
这样,其实就是对单位是'只'这个条件和'支'这个条件进行判断.而我们如果将单位的判断去掉:
  1. SELECT * FROM [数据表$] where '支'
这样写的话,其实效果一样,得到所有单位,大胆猜测一下,这个'支'大概在其中被翻译为True.
结合我另一个帖子的理解,就明白为什么之前的语句得到了所有的单位了:
[SQL in Excel] 由Select语句获取所有字段名http://www.exceltip.net/thread-9666-1-1.html
SQL中字符的匹配.rar
2楼
lrlxxqxa
在[]中的两个字符间有"或"运算,学习了
3楼
tobeso
kankan.............

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap