Подстановочный знак SQL подчеркивает символ, не возвращающий результаты - PullRequest
0 голосов
/ 17 ноября 2018

Кто-нибудь знает, почему этот запрос возвращает ноль результатов? Должно быть возвращено около 93 результатов.

SELECT ps_stock_available.id_product FROM ps_stock_available
LEFT JOIN ps_product_lang ON ps_stock_available.id_product = ps_product_lang.id_product
WHERE description LIKE 'Christma_';

Этот запрос также возвращает результатов нет :

SELECT ps_stock_available.id_product FROM ps_stock_available
LEFT JOIN ps_product_lang ON ps_stock_available.id_product = ps_product_lang.id_product
WHERE description LIKE 'Christma%';

Этот запрос возвращает 93 результатов :

SELECT ps_stock_available.id_product FROM ps_stock_available
LEFT JOIN ps_product_lang ON ps_stock_available.id_product = ps_product_lang.id_product
WHERE description LIKE '%Christma%';

Я работаю в phpMyAdmin ver. 4.7.7 Окно SQL-запроса MySQL версии 5.6.41-84.1.

1 Ответ

0 голосов
/ 17 ноября 2018

Возможно, у вас нет поля description, значение которого начинается с Christma.

LIKE 'Christma%' и LIKE 'Christma_' ожидает, что значение начинается с Christma с одним или несколькимисимволы на правой стороне.В левой части Christma не должно быть никаких символов (даже пробельных символов).Также обратите внимание, что подстановочный знак _ ожидает ровно один символ.

Например, если столбец description имеет значение Christmas Carol.LIKE 'Christma%' будет соответствовать значению;в то время как LIKE 'Christma_' не будет, так как он ожидает ровно один символ только после Christma.

LIKE '%Christma%' ожидает ноль или много символов по обе стороны от Christma, чтобы иметь возможность совпадения.

Из Документы :

Сопоставление с шаблоном SQL позволяет использовать _ для сопоставления с любым отдельным символом и % для сопоставления с произвольным количеством символов(включая ноль символов).В MySQL шаблоны SQL по умолчанию не чувствительны к регистру.

...