我正在雪花中运行此查询:
select * from my_database.information_schema.tables where table_schema NOT LIKE '%information%';
当我看这些记录时,其中一些 INFORMATION_SCHEMA 作为 table_schema. 为什么我的过滤器不工作?
INFORMATION_SCHEMA
table_schema.
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
vojdkbi02#
当我查看记录时,其中一些记录的信息模式与表模式相同。标识符当标识符不带引号时,它将以大写形式存储和解析。问题是你比较的是大小写字符串是不同的。
where table_schema LIKE '%information%'; -- this comparison will not work
其他比较方法:
where table_schema LIKE UPPER('%information%');
值得注意的是 SHOW TABLES LIKE '<patern>' 在设计上不区分大小写,并且无论使用何种版本,都将返回以下内容的匹配:
SHOW TABLES LIKE '<patern>'
SHOW TABLES LIKE '%information%'; SHOW TABLES LIKE '%INFORMATION%'; SHOW TABLES LIKE '%Information%';
2条答案
按热度按时间e5nqia271#
like区分大小写,而as ilike不区分大小写。你的两个字符串是不同的情况。所以我建议你换成我喜欢的
给予:
vojdkbi02#
当我查看记录时,其中一些记录的信息模式与表模式相同。
标识符
当标识符不带引号时,它将以大写形式存储和解析。
问题是你比较的是大小写字符串是不同的。
其他比较方法:
值得注意的是
SHOW TABLES LIKE '<patern>'
在设计上不区分大小写,并且无论使用何种版本,都将返回以下内容的匹配: