mysql LIKE,FIND_IN_SET,locate,查询字段中包含

1,LIKE 是广泛的模糊匹配,字符串中没有分隔符,只要是包含有需要查询内容的结果全部返回;

     
SELECT * FROM userinfo WHERE username LIKE CONCAT('李','%'); /*查询姓李的用户*/


SELECT * FROM userinfo WHERE username LIKE CONCAT('%','成','%'); /*查询用户名子中包含 成的用户*/


SELECT * FROM userinfo WHERE username LIKE CONCAT('%','成'); /*查询用户名已成结尾的用户*/


2,Find_IN_SET 是精确匹配,查询的字段值需以英文”,”分隔,被分隔的字段值中有和条件完全相同的内容。

    FIND_IN_SET(str,strlist)

    假如字符串str 在由N 子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。
   一个字符串列表就是一个由一些被‘,’符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则   FIND_IN_SET() 函数被优化,使用比特计  算。
   如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。 

  SELECT * FROM userinfo WHERE FIND_IN_SET(`id`,'1,2,3,4,5,6')/*查询id为1,2,3,4,5,6的用户*/



3,locate(substr,str) 返回子串 substr 在字符串 str 中第一次出现的位置。如果子串 substr 在 str 中不存在,返回值为 0:

  LOCATE(substr,str,pos) 返回子串 substr 在字符串 str 中的第 pos 位置后第一次出现的位置。如果 substr 不在 str 中返回 0 

  POSITION(substr IN str)是 LOCATE(substr,str)同义词

  INSTR(str,substr)  返回字符串str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,只是参数的顺序被颠倒。 

  isnull(expr) 的用法:若expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。

        ifnull(expr1, expr2)的用法 若expr1不为null,则ifnull()的返回值为expr1,若expr1为null,则返回expr2的值。


    nullif(expr1,expr2)的用法:  若expr1等于expr2,则返回null,否则返回1。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值