SQL LIKE без учёта NULL ячеек

Рейтинг: 0Ответов: 1Опубликовано: 10.09.2014

День добрый!

У меня по закону фрейморка все пустые ячейки в БД MySQL, должны быть NULL, но у меня есть SQL запрос, который подразумевает поиск пользователей по 4 критериям, имя, фамилия, город, пол. Но возникает проблема, если у пользователя хотя бы одна из этих ячеек NULL, то она не попадает под LIKE и соответственно под результат, как мне это утрясти?

$users = Users::findByRawSql('u.f_name LIKE ? AND u.s_name LIKE ? AND u.sex LIKE ? AND u.city LIKE ?', array(
            $this->_addLike($this->request->getPost('f_name')),
            $this->_addLike($this->request->getPost('s_name')),
            $this->_addLike($this->request->getPost('sex')),
            $this->_addLike($this->request->getPost('city'))
        ));

$sql = "SELECT u.id, u.avatar, u.city, u.f_name, u.s_name, u.notes, u.username, SUM(b.summ) AS summ
FROM users AS u LEFT JOIN balance AS b ON b.user_id = u.id
WHERE $conditions GROUP BY u.id ORDER BY summ DESC";

Ответы

▲ 0Принят

Вместо имени столбца используйте COALESCE, например:

COALESCE(u.f_name, '') LIKE