Select ___where __LIKE ___
Select ___where __LIKE ___
我想 select 数据库中所有不包含字符 _
的表,为此我使用了请求:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema="DB_NAME"
AND TABLE_NAME NOT LIKE '%_%';
但是好像不行
下划线 (_
) 是 SQL 的 LIKE
运算符中的单字符通配符。如果您想将其视为常规字符,则必须明确 escape
it:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema='DB_NAME' and TABLE_NAME NOT LIKE '%\_%' ESCAPE `\`;
您可以尝试使用 mysql 中的 REGEXP
到 select 每个不包含 _
的表格。
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema='DB_NAME' and TABLE_NAME REGEXP '^[^_]+$';
简答
TABLE_NAME NOT LIKE '%\_%'
长答案
字符%
和_
在LIKE
表达式中都是特殊字符。
%
匹配零个或多个字符。
_
正好匹配一个字符。
如果你想在你的查询中使用它,你必须使用转义字符。默认为 \
.
\%
Mach '%' 字符。
\_
Mach '_' 字符。
在你的情况下会是:
TABLE_NAME NOT LIKE '%\_%'
可以定义不同的转义字符,例如|
。
TABLE_NAME NOT LIKE '%|_%' ESCAPE '|'
我想 select 数据库中所有不包含字符 _
的表,为此我使用了请求:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema="DB_NAME"
AND TABLE_NAME NOT LIKE '%_%';
但是好像不行
下划线 (_
) 是 SQL 的 LIKE
运算符中的单字符通配符。如果您想将其视为常规字符,则必须明确 escape
it:
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema='DB_NAME' and TABLE_NAME NOT LIKE '%\_%' ESCAPE `\`;
您可以尝试使用 mysql 中的 REGEXP
到 select 每个不包含 _
的表格。
SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES
WHERE table_schema='DB_NAME' and TABLE_NAME REGEXP '^[^_]+$';
简答
TABLE_NAME NOT LIKE '%\_%'
长答案
字符%
和_
在LIKE
表达式中都是特殊字符。
%
匹配零个或多个字符。_
正好匹配一个字符。
如果你想在你的查询中使用它,你必须使用转义字符。默认为 \
.
\%
Mach '%' 字符。\_
Mach '_' 字符。
在你的情况下会是:
TABLE_NAME NOT LIKE '%\_%'
可以定义不同的转义字符,例如|
。
TABLE_NAME NOT LIKE '%|_%' ESCAPE '|'