SQL 怎样判断一个字段中是否存在某一个值

比如说同一个字段里面有
aa,bb,cc,dd
用什么语句能通过aa查询出包含aa的字段的这条记录
别要说用LIKE,我想要精确的
这里的字段值内容并不固定,可能还包括aaaaa的情况,如果用like的话得判断好多种情况,考虑会影响效率,有没有一种类似于 in 的方法,可以直接精确的得到结果?

INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual;
INSTRING
---------
9
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-11
按照你的要求只能用like。
like '%,%aa%,%';

---
以上,希望对你有所帮助。本回答被网友采纳
第2个回答  2020-05-21
使用函数
charindex,第一个参数是你要查找的字符,第二个参数是要在哪个字符中查找
比如:
SELECT
CHARINDEX('1','123456')
返回1所在的位置
第3个回答  2010-03-25
没有办法,你的这个问题我也碰到很多次,如果字段内容完全是按你给出这样aa,bb,cc,dd的,like 还是可以精确匹配的,因为有逗号分隔符,但是还有其他更复杂的情况,没有明显的分割,那就难办了。对于你说的效率问题,即使有类似有in之类的方法,oracle内部本身也是需要一个一个去匹配的,效率不会有所提升,只是改变下sql的表达方法而已。其实这些值本来可以拆成一对多的关系
,哎,没有办法,表是人家很早就这样设计的
第4个回答  2010-03-28
mysql 的MyISAM存储引擎可以支持全文检索,通常mysql的默认存储引擎就是MyISAM,你可以把要查询的字段建立索引,不管你用什么方法,查询效率会有较大的提高
不推荐用 '%like%',因为索引的左匹配原则,它是不能使用索引的
可以使用 in ,in 可以使用索引

如果你要精确查找,可以建立反向索引

相关了解……

你可能感兴趣的内容

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