Snowflake中表连接是否大小写不敏感?技术咨询
Snowflake表连接的大小写敏感性问题
是的,Snowflake中的表连接默认是大小写不敏感的,这源于它对标识符(列名、表名等)的默认处理规则:未用双引号包裹的标识符会被自动转换为大写存储和匹配,所以你查询里的a.YEAR=b.year本质是在比较大写的YEAR列,自然不区分大小写。
如果需要实现大小写敏感的连接,可以通过指定区分大小写的排序规则(Collation)来实现,比如使用en_US_CS(CS代表Case Sensitive):
with cte_1 as (select VIN,YEAR,MAKENAME,MODELNAME from TBL_A), cte_2 as (select YEAR,MAKE_CHROME,MODEL_CHROME from TBL_B) select * from cte_1 a inner join cte_2 b on a.YEAR = b.year and a.MAKENAME COLLATE 'en_US_CS' = b.MAKE_CHROME COLLATE 'en_US_CS' and a.MODELNAME COLLATE 'en_US_CS' = b.MODEL_CHROME COLLATE 'en_US_CS';
另外需要注意:如果你的列值本身存储了不同大小写的内容,且需要严格区分,必须确保使用区分大小写的排序规则,否则Snowflake会默认将它们视为相等。
内容的提问来源于stack exchange,提问作者sa_
相关产品推荐
相关产品推荐

