MySQL 对 NULL 值使用 LIKE 进行查询时出现问题

MySQL problem with query with LIKE on a NULL value

我有两个表:文章和贸易。 他们在 articles.tradeid = trade.idleft join。并非每篇文章都有交易。于是就有了articles.tradeid0的价值。

当我开始搜索时:

SELECT * FROM articles 
LEFT JOIN trade ON articles.tradeid=trade.id 
WHERE CONCAT(articles.number,'|',trade.name) LIKE '%12345%'

虽然有一篇编号为 12345 的文章,但它的 tradeid 为 0,但我没有得到任何结果。 由于加入 trade.name 的值是 NULL。 有人有解决方案吗?

你可以替换CONCAT with CONCAT_WS:

SELECT * 
FROM articles 
LEFT JOIN trade ON articles.tradeid=trade.id 
WHERE CONCAT_WS('|', articles.number, trade.name) 
LIKE '%12345%'

DEMO

Concatenate With Separator 是 CONCAT 的一种特殊形式。小心,因为它有不同的语法