这篇精彩的blog posts讨论了在where子句和更有效的搜索文本方式中使用LOWER()
的低效率。在ORDER BY
子句中是否有类似的方法可以做到这一点?例如:
SELECT * FROM mytable
ORDER BY LOWER(first_name)
根据字段名称的小写文本进行排序的最有效方法是什么,例如在按列排序时在Google表格或Excel中进行排序?
答案 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