select group_concat(TABLE_NAME) from information_schema.tables where TABLE_SCHEMA = ‘mysql’ 该语句单引号,双引号,反斜杠被过滤如何查询其中mysql是一个数据库
时间: 2024-09-09 20:15:10 浏览: 138
这个SQL语句的目的是从`information_schema.tables`表中选择所有在MySQL数据库下的TABLE_NAME字段,并将它们连接成一个字符串列表。但是,因为SQL本身对单引号('), 双引号(")以及反斜杠(\)有特殊的处理规则,直接使用它们可能会导致语法错误。
如果MySQL中的实际database名包含单引号、双引号或反斜杠,你需要转义它们,以便正确解析。以下是转义后的查询示例:
```sql
SELECT GROUP_CONCAT(T.TABLE_NAME)
FROM information_schema.tables T
WHERE TABLE_SCHEMA = 'mysql\''
```
在这个例子中,`mysql\'` 表示 "mysql" 后面跟着一个反斜杠,这表示MySQL字面上的名字。如果你想保留整个名字中的原始引号,可以使用两个连续的反斜杠来转义,如下:
```sql
SELECT GROUP_CONCAT(T.TABLE_NAME)
FROM information_schema.tables T
WHERE TABLE_SCHEMA = 'mysql\\\''
```
这里 `mysql\\\'` 表示 "mysql'",单引号会被正确地保留在结果中。
阅读全文