Google bigquery 范围上的OrderBy Coulmn(类型字符串)查询

Google bigquery 范围上的OrderBy Coulmn(类型字符串)查询,google-bigquery,Google Bigquery,我有BQ表,它有范围列。值类似于(0-50100-150200-2501000-1200,>=400) 当我在这个专栏上做orderBy时,我得到的是字典顺序,比如(0-50100-1501000-1200200-250,>=400) 但我希望它按数字排序,如(0-50100-150200-250,>=4001000-1200)。 有人能帮我创建这个查询吗。您可以使用下面示例中的方法 #standardSQL with data as ( select '0-50' range_col un

我有BQ表,它有范围列。值类似于
(0-50100-150200-2501000-1200,>=400)

当我在这个专栏上做orderBy时,我得到的是字典顺序,比如
(0-50100-1501000-1200200-250,>=400)

但我希望它按数字排序,如
(0-50100-150200-250,>=4001000-1200)。

有人能帮我创建这个查询吗。

您可以使用下面示例中的方法

#standardSQL
with data as (
  select '0-50' range_col union all
  select '100-150' union all
  select '200-250' union all
  select '1000-1200' union all
  select '>=400' 
)
select *
from data
order by cast(regexp_extract(range_col, r'\b(\d+)\b') as int64)
有输出


Mikhail,谢谢你的解决方案。它对我有效,但在一个边缘情况下它不起作用。对于(100-150,只需添加
,regexp\u extract(range\u col,r'^