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

时间:2018-11-17 07:02:08

标签: mysql sql phpmyadmin wildcard

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

1 个答案:

答案 0 :(得分:1)

您可能没有任何description开头的Christma字段。

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

例如,如果description列的值为Christmas CarolLIKE 'Christma%'将与值匹配;而LIKE 'Christma_'不会,因为它只希望在Christma之后一个字符。

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

来自Docs

  

SQL模式匹配使您可以使用_来匹配任何单个   字符和%以匹配任意数量的字符(包括   零个字符)。在MySQL中,SQL模式不区分大小写   默认。