mysql中包含查询的五种方法总结
场景:数据库表字段存的是一个字符串,用“,”分隔,查询的sql需要匹配其中某一段字符串
测试的表数据如下图:
方法1:使用LIKE
LIKE关键字用于模糊匹配,可以在查询中使用通配符进行匹配。%表示匹配任意多个字符,_表示匹配一个字符。
SELECT * FROM test t WHERE t.is_deleted = 0 AND ((t.key LIKE "%TEST_KEY_1%") OR (t.key LIKE "%TEST_KEY_2%"))
方法2:使用INSTR
INSTR函数用于查找子字符串在父字符串中的位置,如果找到则返回对应的位置,如果没找到则返回0。其中substr参数表示要查找的子字符串,str参数表示父字符串。
SELECT * FROM test t WHERE t.is_deleted = 0 AND (INSTR(t.key,"TEST_KEY_1") OR INSTR(t.key,"TEST_KEY_2"))
方法3:使用LOCATE
LOCATE函数和INSTR函数类似,用于查找子字符串在父字符串中的位置,但可以指定从父字符串的哪个位置开始查找。如果找到则返回对应的位置,如果没找到则返回0。其中substr参数表示要查找的子字符串,str参数表示父字符串,pos参数表示从哪个位置开始查找。
SELECT * FROM test t WHERE t.is_deleted = 0 AND (LOCATE("TEST_KEY_1",t.key) OR LOCATE("TEST_KEY_2",t.key))
方法4:使用POSITION
POSITION函数和INSTR函数类似,用于查找子字符串在父字符串中的位置,如果找到则返回对应的位置,如果没找到则返回0。其中substr参数表示要查找的子字符串,str参数表示父字符串。
SELECT * FROM test t WHERE t.is_deleted = 0 AND (POSITION("TEST_KEY_1" IN t.key) OR POSITION("TEST_KEY_2" IN t.key))
这四种方法返回的结果是一样的,如下图:
如果想要精准匹配的话,上面四种就不适用了,可以使用方法5
方法5:使用FIND_IN_SET
FIND_IN_SET函数用于在一个逗号分隔的字符串集合中查找一个子字符串是否存在。如果存在,则返回对应的位置,如果不存在,则返回0。其中str参数表示要查找的子字符串,set参数表示用逗号分隔的字符串集合。
SELECT * FROM test t WHERE t.is_deleted = 0 AND (FIND_IN_SET("TEST_KEY_1",t.key) OR FIND_IN_SET("TEST_KEY_2",t.key))
总结
到此这篇关于mysql中包含查询的五种方法的文章就介绍到这了,更多相关mysql包含查询方法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
超详细mysql left join,right join,inner join用法分析
比较详细的mysql的几种连接功能分析,只要你看完就能学会的好东西2008-08-08详解mysql 使用left join添加where条件的问题分析
这篇文章主要介绍了详解mysql 使用left join添加where条件的问题分析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2021-02-02解决启动MySQL服务时出现"mysql本地计算机上的MySQL服务启动后停止"的问题
某一天我的MySQL启动突然出现了异常:“mysql本地计算机上的MySQL服务启动后停止,某些在未由其他服务或程序使用时将自动停止,” ,小编在网络上面找了很多方法,MySQL启动成功了,但是第二天开启MySQL时还是出现了这个问题,现把两种方法总结一下,需要的朋友可以参考下2023-11-11
最新评论