SQL 通配符下划线字符不返回结果

SQL wildcard underscore char not returning results

有人知道为什么这个查询返回零结果吗?它应该返回大约 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_';

此查询也returns 无结果:

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%';

这个查询 returns 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 版本。 4.7.7 SQLMySQL版本5.6.41-84.1.

的查询框

您可能没有任何值从 Christma 开始的 description 字段。

LIKE 'Christma%'LIKE 'Christma_' 期望值从 Christma 开始,其右侧有一个或多个字符。 Christma 的左侧不应有任何字符(甚至没有空白字符)。另请注意,_ 通配符只需要一个字符。

例如,如果 description 列具有 Christmas Carol 值。 LIKE 'Christma%' 将匹配该值;而 LIKE 'Christma_' 不会,因为它只在 Christma.

之后期望一个字符

LIKE '%Christma%' 需要 Christma 两边的零个或多个字符,以便能够匹配。

来自 Docs:

SQL pattern matching enables you to use _ to match any single character and % to match an arbitrary number of characters (including zero characters). In MySQL, SQL patterns are case-insensitive by default.