我试图仅使用或包含符号(_)来删除剩余值,但它会让我输出失败,有人可以帮助修复这些查询吗?感谢。
我的表:
+--------+
| 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 |
+--------+
答案 0 :(得分:0)
在MySQL LIKE语句中,_
不是下划线,就像%
不是百分号。 _
表示"任何角色" %
表示"任意数量的字符"。
SQL模式匹配使您可以使用“_”匹配任何单个字符,使用“%”匹配任意数量的字符(包括零个字符)。
要避免这种情况,只需使用反斜杠转义下划线:
SELECT left(letter,LOCATE('_',letter) - 1) FROM mytable where letter like '%\_%'
-- Escape it with a backslash! ^