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