在MySQL的select语句中使用Regexp的正确方法

时间:2017-05-23 20:57:36

标签: mysql sql regex select

MySQL中,我想查询信息模式以查找特定数据库中的表。

我在select语句中使用Regexp,如下所示。

select TABLE_NAME from information_schema.tables where TABLE_SCHEMA='testing' and TABLE_NAME REGEXP 'test|test_10' 

输出:

123_test
123_test_10
temp_test
temp_test_10

这里我得到的表格列表以testtest_10结尾,如select语句中所示。

我在下面使用时获得相同的结果。

select TABLE_NAME from information_schema.tables where TABLE_SCHEMA='testing' and TABLE_NAME REGEXP 'test' 

输出:

123_test
123_test_10
temp_test
temp_test_10

使用第二个语句我怎样才能获得以' test`结尾的表格列表。

我想要的预期输出是

预期产出:

123_test

另外,我想排除列表中的一些表格。例如,排除以temp开头并以test

结尾的表格

1 个答案:

答案 0 :(得分:1)

如果您只想在测试中使用表名 end ,请不要打扰regexp。使用like

select TABLE_NAME
from information_schema.tables
where TABLE_SCHEMA = 'testing' and TABLE_NAME LIKE '%test' ;

为什么like更受欢迎?首先,它是标准的SQL。其次,在某些情况下(这不是其中之一),可以使用索引进行优化。

对于常规表达,只需指定表达式需要位于名称的末尾:

where TABLE_SCHEMA = 'testing' and TABLE_NAME REGEXP 'test$' ;