在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
这里我得到的表格列表以test
和test_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
答案 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$' ;