在BigQuery中通过LOWER进行高效排序

时间:2018-03-08 00:48:56

标签: google-cloud-platform google-bigquery

这篇精彩的blog posts讨论了在where子句和更有效的搜索文本方式中使用LOWER()的低效率。在ORDER BY子句中是否有类似的方法可以做到这一点?例如:

SELECT * FROM mytable
ORDER BY LOWER(first_name)

根据字段名称的小写文本进行排序的最有效方法是什么,例如在按列排序时在Google表格或Excel中进行排序?

1 个答案:

答案 0 :(得分:1)

引用博客中的RegExp方法在此处不起作用/适用(对于ORDER BY),因为用于BigQuery正则表达式支持的re2库不支持各自所需的功能

具体来说 - re2不支持在正则表达式替换中更改案例

如果支持它 - 你可以使用类似

的东西
REGEXP_REPLACE(first_name, r'.*', r'\L\0') <-- just mockup - does not work with BigQuery

此处\L - 将所有后续令牌转换为各自的小写等值词 和\0(由BQ支持)匹配整个模式,因此整个first_name列将替换为相应的小写版本

参见示例here

但是 - 再次 - BigQuery / re2

不支持\L
相关问题