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。