如何在 Apache drill 中进行不区分大小写的比较

How to do Case Insensitive comparison in Apache drill

我正在尝试连接来自不同数据源(RDBMS 和 json)的两个 table,但是,查询成功但数据在一个 table(json 数据源)是大写,另一个 table(RDBMS 数据源)中的数据是小写。由于正在进行区分大小写的比较,结果 table.

中没有数据
select * from dfs.`table1` as t1 join plugin.`table2` as t2 on t1.a = t2.a limit 10

上述查询没有结果。

但是,我已经通过使用 SQL:2014 中可用的 UPPERCASE 和 LOWERCASE 函数获得了结果。

select * from dfs.`table1` as t1 join plugin.`table2` as t2 on UPPERCASE(t1.a) = t2.a limit 10

我想知道是否可以将 drill 配置为进行不区分大小写的比较,而不是使用 UPPERCASE 和 LOWERCASE 函数。

简答 - 你不能。


在大型 RDBMS 中,您可以通过将排序规则设置为 utf8-ci 或类似的方式来实现此目的,但据我所知,Drill 中没有此选项。

一般来说,您应该避免隐式cit 不区分大小写的联接,因为它通常会导致无法预料的结果。在这种情况下,比较 UPPERCASE() 的值是最佳做法。