Php MySQL使用REGEXP或类似工具选择具有数据库别名的表名

Php MySQL使用REGEXP或类似工具选择具有数据库别名的表名,php,mysql,regex,Php,Mysql,Regex,我的表格如下: id | query - ------------------------------------------------ 1 | SELECT COUNT(*) FROM `test`.`user`; 2 | INSERT INTO `test`.`user` (id,name,email) VALUES ('4','Don','don@quikr.com'); 3

我的表格如下:

id    |                query                 -
------------------------------------------------
1     | SELECT COUNT(*) FROM `test`.`user`;
2     |  INSERT INTO `test`.`user` (id,name,email)
         VALUES      ('4','Don','don@quikr.com');
3     | SELECT COUNT(*) FROM `test`.`data`;
我想在查询中获取带有“
test
user
”模式的行

您可以使用LIKE

SELECT * FROM `tablename` WHERE `query` LIKE '%test%user%'
%是通配符。你可以把它放在前面,后面,或者中间,它可以被多次使用。上面的查询将查找任何按顺序包含“test”和“user”的内容,其中包含中间、之前或之后的任何字符

SELECT * FROM ... WHERE LOWER(query) LIKE '%`test`.`user`%'

这假设您在

周围没有任何空格。如果您使用
REGEXP
,您可以在查询中获得对模式匹配的更多控制,例如

select `query` from test WHERE `query` REGEXP '.*test.*user.*';
使用
REGEXP
提供查询的基本结构,该结构适用于您提出的问题,但可以根据您的需要进行修改

如图所示


有关使用
REGEXP
的可用元字符列表,请参见-

检查失败的用例:从
test
main
main内部连接
db
user
usr中选择main.id、usr.name;如果表名为“user\u duplicate”或“usersomething”,则上述查询将失败。