博主要做一个mysql数据库的同key值但是多条件(字段)模糊查询,查阅资料发现CONCAT可以实现,将多个字段放入CONCAT()函数体内就好,用‘,’隔开。
后来发现一个bug,输入查询条件,明明数据库存在确搜索不到任何结果!很是郁闷,才知道CONCAT函数是将多个字段拼接在一起,但是如果有一个字段是null则直接返回null,这样当然是不能完成需求的。
最初始的sql:
sql = "SELECT * FROM company WHERE CONCAT(CompanynameChinese,Delegate,strategy) LIKE %s order by IsId desc limit %s ,%s"
查资料发现还有一个CONCAT_WS函数:
=====》是这么介绍的使用函数CONCAT_WS()。使用语法为:CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
说了这么多,重点来了,会忽略所有的 NULL
更改后的sql:
sql = "SELECT * FROM company WHERE CONCAT_WS(CompanynameChinese,'_',Delegate,'_',strategy) LIKE %s order by IsId desc limit %s ,%s"
这样任何一个字段在数据库为null也不影响查询啦~