mysql的CONCAT函数和CONCAT_WS函数

博主要做一个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也不影响查询啦~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值