mysql 查询以选择以特定字符结尾的字符串

oknrviil  于 2023-03-11  发布在  Mysql
关注(0)|答案(7)|浏览(268)

我有一个包含字符串的列,如下所示:

aaa_1
aaa_11

我需要查询以_1结尾的字符串。我尝试了以下方法:从表中选择col,其中col类似%_1;但是查询给我的字符串以_1_11结尾,我该如何更正呢?

kpbwa7wx

kpbwa7wx1#

试试这个:

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

字符_是一个jolly,与%类似,但它只匹配单个字符,因此必须使用\对其进行转义
参见:http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

uqzxnwby

uqzxnwby2#

您可能需要使用与子字符串更相关的内容。
尝试使用where子句,例如:

SELECT col from table WHERE RIGHT(col, 2) = '_1'
3pvhb19x

3pvhb19x3#

您应该通过添加反斜杠\来转义%_,因为它们在mysql中是通配符:
http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

String |     Description
\%     |     Matches one “%” character
\_     |     Matches one “_” character
htzpubme

htzpubme4#

这些语句中的许多语句将获得%_12%_111121等内容。请确保测试各种情况,以确保这些SELECT语句为您提供了正确的子集。

niknxzdl

niknxzdl5#

SELECT col FROM table WHERE col REGEXP '_1[[:>:]]'
kuhbmx9i

kuhbmx9i6#

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

select column_name
from table
where column_name regexp '.*er$';
ulydmbyx

ulydmbyx7#

回答得好!
我的答案是从其他职位的延伸。
如果要过滤掉以特定字符结尾的数据,请使用REGEXP运算符。
示例:下面的查询返回结束字符为元音-的所有字符串

SELECT column_name
FROM table_name
WHERE column_name REGEXP ".*[a,e,i,o,u]{n}$"     -- n = number of vowels at the end

相关问题