Mysql "like" 返回意外结果
Mysql "like" returning unexpected results
我正在创建一个 MySQL 查询以获取仅包含指定字符串的所有 table 的大小。
我正在使用下面的代码:
SELECT
TABLE_NAME AS `Table`,
(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024)) AS `Size (MB)`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA ='Servername' AND
(TABLE_NAME LIKE '%log_%' OR TABLE_NAME LIKE '%_log%')
GROUP BY TABLE_SCHEMA
ORDER BY TABLE_SCHEMA;
Expected Output
--------------------
Table Size (MB)
--------------------
login_log 10.0005
log_login 00.8800
Resulting Output
--------------------
Table Size (MB)
--------------------
login_log 10.0005
login 05.000
log_login 00.8800
在上面的结果中,login
table 不是必需的,但 MySQL 正在返回它。我怎样才能避免这种情况只得到那些包含指定字符串的 tables?
您的下划线 _
也充当通配符,表示任何字符。
您可以通过使用反斜杠字符 \
:
转义 SQL 语句中的下划线来修复它
(TABLE_NAME LIKE '%log\_%' OR TABLE_NAME LIKE '%\_log%')
您可以使用类似于以下查询的内容:
SELECT
TABLE_NAME AS `Table`,
(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024)) AS `Size (MB)`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA ='Servername' AND
(TABLE_NAME LIKE '%\_log' OR TABLE_NAME LIKE 'log\_%')
GROUP BY TABLE_SCHEMA
ORDER BY TABLE_SCHEMA;
输出如下:
Table Size (MB)
--------------------
login_log 10.0005
log_login 00.8800
我正在创建一个 MySQL 查询以获取仅包含指定字符串的所有 table 的大小。
我正在使用下面的代码:
SELECT
TABLE_NAME AS `Table`,
(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024)) AS `Size (MB)`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA ='Servername' AND
(TABLE_NAME LIKE '%log_%' OR TABLE_NAME LIKE '%_log%')
GROUP BY TABLE_SCHEMA
ORDER BY TABLE_SCHEMA;
Expected Output
--------------------
Table Size (MB)
--------------------
login_log 10.0005
log_login 00.8800
Resulting Output
--------------------
Table Size (MB)
--------------------
login_log 10.0005
login 05.000
log_login 00.8800
在上面的结果中,login
table 不是必需的,但 MySQL 正在返回它。我怎样才能避免这种情况只得到那些包含指定字符串的 tables?
您的下划线 _
也充当通配符,表示任何字符。
您可以通过使用反斜杠字符 \
:
(TABLE_NAME LIKE '%log\_%' OR TABLE_NAME LIKE '%\_log%')
您可以使用类似于以下查询的内容:
SELECT
TABLE_NAME AS `Table`,
(((DATA_LENGTH + INDEX_LENGTH) / 1024 / 1024)) AS `Size (MB)`
FROM information_schema.TABLES
WHERE TABLE_SCHEMA ='Servername' AND
(TABLE_NAME LIKE '%\_log' OR TABLE_NAME LIKE 'log\_%')
GROUP BY TABLE_SCHEMA
ORDER BY TABLE_SCHEMA;
输出如下:
Table Size (MB)
--------------------
login_log 10.0005
log_login 00.8800