雪花where子句不过滤?

lf3rwulv  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(285)

我正在雪花中运行此查询:

select *
from my_database.information_schema.tables
where
    table_schema NOT LIKE '%information%';

当我看这些记录时,其中一些 INFORMATION_SCHEMA 作为 table_schema. 为什么我的过滤器不工作?

e5nqia27

e5nqia271#

like区分大小写,而as ilike不区分大小写。你的两个字符串是不同的情况。所以我建议你换成我喜欢的

SELECT 'a' LIKE 'A' as "a_like_A", 'a' ILIKE 'A' as "a_ilike_A";

给予:

a_like_A    a_ilike_A
FALSE       TRUE
vojdkbi0

vojdkbi02#

当我查看记录时,其中一些记录的信息模式与表模式相同。
标识符
当标识符不带引号时,它将以大写形式存储和解析。
问题是你比较的是大小写字符串是不同的。

where table_schema LIKE '%information%';  -- this comparison will not work

其他比较方法:

where table_schema LIKE UPPER('%information%');

值得注意的是 SHOW TABLES LIKE '<patern>' 在设计上不区分大小写,并且无论使用何种版本,都将返回以下内容的匹配:

SHOW TABLES LIKE '%information%';
SHOW TABLES LIKE '%INFORMATION%';
SHOW TABLES LIKE '%Information%';

相关问题