MySQL проблема с запросом LIKE для значения NULL - PullRequest
0 голосов
/ 13 февраля 2020

У меня есть две таблицы: статьи и торговля. Они left join на articles.tradeid = trade.id. Не каждая статья имеет торговлю. Таким образом, есть значение articles.tradeid 0.

Когда я начинаю поиск, например:

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. Есть решение?

1 Ответ

0 голосов
/ 13 февраля 2020

Вы можете заменить CONCAT на CONCAT_WS:

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

DEMO

Объединить с Разделитель - это особая форма CONCAT. Будьте осторожны, поскольку у него другой синтаксис

...