MySQL concat、instr、IFNULL实现多字段查询

MySQL语法说明

一、mySql中IFNULL的使用说明

IFNULL(expr1,expr2)

如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值

二、concat的使用说明

mysql CONCAT(str1,str2,…)

返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col)

三、instr的使用说明

INSTR(STR,SUBSTR)

在一个字符串(STR)中搜索指定的字符(SUBSTR),返回发现指定的字符的位置(INDEX);
STR 被搜索的字符串
SUBSTR 希望搜索的字符串
结论:在字符串STR里面,字符串SUBSTR出现的第一个位置(INDEX),INDEX是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。

四、应用

select t.id from test t where t.status=1 and
INSTR(concat(IFNULL(t.target_name,’’),IFNULL(t.target_person,’’),IFNULL(t.target_contact_tel,’’),IFNULL(t.target_address,’’)),#{keyword})>0

keyword 是查询参数,其余是匹配比较字段。

猜你喜欢

转载自blog.csdn.net/hacker_Lees/article/details/86487810