MySQL如何判断字段是否包含某个字符串

摘要:
mysql有很多字符串函数find_in_set函数是返回str2中str1所在的位置索引,str2必须以","分割开。

MySQL 判断字段是否包含某个字符串的方法

方法一:like

SELECT * FROM 表名 WHERE 字段名 like "%字符%";

方法二:find_in_set()

利用mysql 字符串函数 find_in_set();

SELECT * FROM users WHERE find_in_set('字符', 字段名);

这样是可以的,怎么理解呢?

mysql有很多字符串函数 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引,str2必须以","分割开。

注:当str2为NO1:“3,6,13,24,33,36”,NO2:“13,33,36,39”时,判断两个数据中str2字段是否包含‘3’,该函数可完美解决

mysql > SELECT find_in_set()('3','3,6,13,24,33,36') as test;
-> 1
mysql > SELECT find_in_set()('3','13,33,36,39') as test;
-> 0

方法三:locate(字符,字段名)

使用locate(字符,字段名)函数,如果包含,返回>0的数,否则返回0 ,

它的别名是 position in

select * from 表名 where locate(字符,字段)
select * from 表名 where position(字符 in 字段);

例子:判断site表中的url是否包含'http://'子串,如果不包含则拼接在url字符串开头

update site set url =concat('http://',url) where locate('http://',url)=0

注意mysql中字符串的拼接不能使用加号+,用concat函数

方法四:INSTR(字段,字符)

select * from 表名 where INSTR(字段,字符)

另外,笔者查看了以上SQL的执行计划(不包含find_in_set),发现都是:

MySQL如何判断字段是否包含某个字符串

网上说模糊查询 用 locate 速度快,不知道结论怎么来的,可能是大数据量的情况下吧。

免责声明:文章转载自《MySQL如何判断字段是否包含某个字符串》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇基于windows server216自带的备份服务windows server backupSQLMAP注入教程-11种常见SQLMAP使用方法详解下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

VBA 字符串处理

1 VBA中的字符串 2 VBA中处理字符串的函数     2.1 比较字符串     2.2 转换字符串     2.3 创建字符串     2.4 获取字符串的长度     2.5 格式化字符串     2.6 查找字符串     2.7 提取字符/字符串     2.8 删除空格     2.9 返回字符代码     2.10 返回数值代表的相应字符...

mysql 索引中的USING BTREE 的意义

索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型。 根据存储引擎定义每个表的最大索引数和最大索引长度。所有存储引擎支持每个表至少16个索引,总索引长度至少为256字节。 大多数存储引擎有更高的限制。MySQL中索引的存储类型有两种:BTREE和HASH,具体和表的存储引擎相关; MYISAM和Inn...

mysql中alter命令的用法

MySQL的ALTER命令是非常有用的,当想改变表的名称,表的字段,或者如果要添加或删除一个现有的表中的列。 让我们开始创建一个表名为testalter_tbl的用例: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 root@host# mysql -u root -p password; En...

mysql hang and srv_error_monitor_thread using 100% cpu(已解决)

昨天晚上,运维过来说有台生产服务器的mysql cpu一直100%,新的客户端登录不了,但是已经在运行的应用都正常可用。 登录服务器后,top -H看了下,其中一个线程的cpu 一直100%,其他的几乎都空闲。 MySQL thread id 14560536, OS thread handle 0x7f1255ef1700, query id 31889...

mysql导入千万级数据实操

前言 目标快速模拟数据一亿条, 存储过程效率太低, 找到个load data的方法, 从本地文件读数据插入到库表中, 正文如下 正文 切换引擎 查询引擎类型 SHOW CREATE TABLE igs_sm_interface_access_log; 查询结果 CREATE TABLE `igs_sm_interface_access_log` ( `...

Java正则表达式入门

众所周知,在程序开发中,难免会遇到需要匹配、查找、替换、判断字符串的情况发生,而这些情况有时又比较复杂,如果用纯编码方式解决,往往会浪费程序员的时间及精力。因此,学习及使用正则表达式,便成了解决这一矛盾的主要手段。 大 家都知道,正则表达式是一种可以用于模式匹配和替换的规范,一个正则表达式就是由普通的字符(例如字符a到z)以及特殊字符(元字符)组成的文字模...