MySQL LIKE用下划线查询

Rap*_*tor 17 mysql sql

我有下表images:

+----+--------------+
| id |   img_path   |
+----+--------------+
| 1  | abc_1.jpg    |
| 2  | abc_2.jpg    |
| 3  | abcde_1.jpg  |
| 4  | abcde_2.jpg  |
| 5  | abcdef_1.jpg |
+----+--------------+
Run Code Online (Sandbox Code Playgroud)

我想选择以img_path开头的条目abc_,所以我使用以下查询:

SELECT id FROM images WHERE img_path LIKE 'abc_%'
Run Code Online (Sandbox Code Playgroud)

但它返回所有5行.我如何只返回id= 1&2(以... img_path开头abc_)?

Rap*_*tor 33

发现这_是一个特殊的角色.必须用反斜杠逃脱.

SELECT id FROM images WHERE img_path LIKE 'abc\_%'
Run Code Online (Sandbox Code Playgroud)

它按预期返回2行

  • 是的,更完整的答案是下划线匹配任何单个字符。 (5认同)
  • 如果您使用 Rails / ActiveRecord,则需要双重转义,如下所示: `where( "name LIKE ?", "abc\\_%" )`。 (2认同)