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

2025-05-14 10:59:41
推荐回答(5个)
回答(1):

INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1 被搜索的字符串
C2 希望搜索的字符串
I 搜索的开始位置,默认为1
J 出现的位置,默认为1
SQL> select instr(’oracle traning’,’ra’,1,2) instring from dual;
INSTRING
---------
9

回答(2):

按照你的要求只能用like。
like '%,%aa%,%';

---
以上,希望对你有所帮助。

回答(3):

使用函数
charindex,第一个参数是你要查找的字符,第二个参数是要在哪个字符中查找
比如:
SELECT
CHARINDEX('1','123456')
返回1所在的位置

回答(4):

没有办法,你的这个问题我也碰到很多次,如果字段内容完全是按你给出这样aa,bb,cc,dd的,like 还是可以精确匹配的,因为有逗号分隔符,但是还有其他更复杂的情况,没有明显的分割,那就难办了。对于你说的效率问题,即使有类似有in之类的方法,oracle内部本身也是需要一个一个去匹配的,效率不会有所提升,只是改变下sql的表达方法而已。其实这些值本来可以拆成一对多的关系
,哎,没有办法,表是人家很早就这样设计的

回答(5):

mysql 的MyISAM存储引擎可以支持全文检索,通常mysql的默认存储引擎就是MyISAM,你可以把要查询的字段建立索引,不管你用什么方法,查询效率会有较大的提高
不推荐用 '%like%',因为索引的左匹配原则,它是不能使用索引的
可以使用 in ,in 可以使用索引

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