Mysql字符串字段判断是否包含字符串的3中方法
方法一:
select * from user where email like "%b@email.com%"; // 这个理解起来很简单, 就是最基本的sql语句了
方法二:
// 使用find_in_set是必须全部匹配才有效果 find_in_set(str1,str2)函数是返回str2中str1所在的位置索引, str2必须以","分割开 select find_in_set('james', 'km,james,kl'); // 返回2, 返回的是位置索引, 从1开始 select * from user where find_in_set('james', name); // 返回的是user表中name字段值是james的所有行, 是完全匹配 // 当且只有name字段值是james, 才匹配, 其他如jam/jame等都不匹配
方法三:
使用locate(substr, str)函数,如果包含,返回>0的数,否则返回0 例子: //判断user表中的url是否包含'http://'子串, 如果不包含则拼接在url字符串开头update user set url = concat('http://', url) where locate('http://', url) = 0 筛选user表中name字段是否含有指定的名字, (注意这里是包含, 不是全匹配, 和上面的方法二有区别) select name,email from user where locate(name,"james,tom,kaven") > 0//如果name字段内容是jam, 那么就符合条件; 如果name字段内容是james, 也符合条件. //如果name字段内容是tims, 就不符合. 注意mysql中字符串的拼接不能使用加号+,用concat函数