17

我有一列包含字符串:

aaa_1
aaa_11

我需要查询以 . 结尾的字符串_1。我尝试了以下方法: select col from table where col like %_1; _1但是查询给了我以and结尾的字符串_11。我该如何纠正这个?

4

6 回答 6

33

试试这个:

select col from table where col like '%\_1'

字符_是一个快乐的,像%,但它只匹配一个字符,所以你必须用它来转义它\

见这里:http ://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

于 2012-12-13T21:15:05.630 回答
22

你会想要使用更多与子字符串相关的东西。

尝试使用 where 子句,例如:

SELECT col from table WHERE RIGHT(col, 2) = '_1'
于 2012-12-13T21:14:09.953 回答
0

您应该转义%_添加反斜杠\,因为它们是 mysql 中的通配符:

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

String |     Description
\%     |     Matches one “%” character
\_     |     Matches one “_” character
于 2012-12-13T21:24:16.837 回答
0

其中许多会选择诸如%_12or之类的东西%_111121。确保您测试了各种案例,以确保这些SELECT语句为您提供了正确的子集。

于 2012-12-13T21:28:45.677 回答
0
SELECT col FROM table WHERE col REGEXP '_1[[:>:]]'
于 2016-09-20T08:46:32.650 回答
0

您可以快速使用此查询过滤掉以特定字符结尾的字符串。
下面的查询输出将给出所有以“er”结尾的名称。

select column_name
from table
where column_name regexp '.*er$';
于 2021-08-28T09:59:05.173 回答