有人知道为什么这个查询返回零结果吗?它应该会返回大约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.7MySQL5.6.41-84.1版本的SQL查询框。

最佳答案

您可能没有任何值从description开始的Christma字段。
LIKE 'Christma%'LIKE 'Christma_'期望值从Christma开始,且右侧有一个或多个字符。Christma的左侧不应该有字符(甚至没有空白字符)。还要注意,_通配符只需要一个字符。
对于eg,ifdescription列具有Christmas Carol值。LIKE 'Christma%'将匹配该值;而LIKE 'Christma_'将不匹配,因为它只希望在Christma之后有一个字符。
LIKE '%Christma%'需要Christma两边有零个或多个字符才能匹配。
Docs
SQL模式匹配使您能够使用_来匹配任何单个
字符和%匹配任意数量的字符(包括
零字符)。在MySQL中,SQL模式不区分大小写
违约。

08-16 08:19