如何删除符号后面的剩余值(_)

时间:2014-12-01 09:14:08

标签: mysql

我试图仅使用或包含符号(_)来删除剩余值,但它会让我输出失败,有人可以帮助修复这些查询吗?感谢。

我的表:

  +--------+
  | letter |
  +--------+
  |  abc_1 |
  |  abc_21|     
  |  ab_3  |
  |  abc   |
  |  a     |
  +--------+

我的输出是这些,也使用这些查询

SELECT left(letter,LOCATE('_',letter) - 1) FROM mytable where letter like '%_%'

  +--------+
  | letter |
  +--------+
  |  abc   |
  |  abc   |     
  |  ab    |
  |  null  |
  |  null  |
  +--------+

1 个答案:

答案 0 :(得分:0)

在MySQL LIKE语句中,_不是下划线,就像%不是百分号。 _表示"任何角色" %表示"任意数量的字符"。

  

SQL模式匹配使您可以使用“_”匹配任何单个字符,使用“%”匹配任意数量的字符(包括零个字符)。

(来自MySQL - Pattern matching

要避免这种情况,只需使用反斜杠转义下划线:

SELECT left(letter,LOCATE('_',letter) - 1) FROM mytable where letter like '%\_%'
-- Escape it with a backslash!                                              ^