Sql 在BigQuery中格式化电话号码

Sql 在BigQuery中格式化电话号码,sql,postgresql,google-bigquery,Sql,Postgresql,Google Bigquery,我想计算每个客户电话号码分组的总订单,但问题是电话号码的格式很混乱。(我选择按他们的电话号码分组,因为有时名称不同,可能是他们的全名,也可能只是昵称) 这里有一个例子 +-------+--------------+----------+------------+ | Name | phone_number | Order Id | Order Type | +-------+--------------+----------+------------+ | Andy F| 08212345

我想计算每个客户电话号码分组的总订单,但问题是电话号码的格式很混乱。(我选择按他们的电话号码分组,因为有时名称不同,可能是他们的全名,也可能只是昵称)

这里有一个例子

+-------+--------------+----------+------------+
| Name  | phone_number | Order Id | Order Type |
+-------+--------------+----------+------------+
| Andy F| 08212345     |        1 | A          |
| Andy  | 821345       |        2 | A          |
| Andi F| 08212345     |        3 | B          |
| Chris | +7712345     |        4 | A          |
| Cris  | 7712345      |        5 | B          |
+-------+--------------+----------+------------+
问题是,本地号码以
0
开头,但有时有些电话号码不包括
0
,如
Andy
电话号码所示。它有相同的电话号码,但其中一个不是以
0
开头的

另一个问题是,当它是外国人号码时,有时它已经包含
+
代码,有时它没有。就像
Chris
,一个是
+77
,另一个是
77

我想要的输出是这样的,这样我就可以根据他们的电话号码进行分组

+-------+--------------+----------+------------+
| Name  | phone_number | Order Id | Order Type |
+-------+--------------+----------+------------+
| Andy F| +628212345   |        1 | A          |
| Andy  | +62821345    |        2 | A          |
| Andi F| +628212345   |        3 | B          |
| Chris | +7712345     |        4 | A          |
| Cris  | +7712345     |        5 | B          |
+-------+--------------+----------+------------+
所有这些数字都有格式吗

我通常使用
REGEXP\u REPLACE(TRIM(电话号码),r'^8','+62')作为电话号码
,但它仅适用于1个条件


当存在多个条件时,我可以使用
regexp\u replace
吗?

一种方法是
case
表达式:

(case when phone_number like '082%'
      then concat('+6282', substr(phone_number, 4))
      when phone_number like '82%'
      then concat('+6282', substr(phone_number, 3))
      when phone_number like '+%'
      then phone_number
      else concat('+', phone_number)
 end)

这似乎符合你问题的逻辑。但是,也可能有其他情况。

我们如何判断
821345
需要加前缀
+62
,而
7712345
应该只加
+
?这就是我要问的,所有本地数字要么以
082xxxxx
开头,要么以
82xxxx
开头。其他的是外国数字,只需要
+
。非常感谢!!我脑子里有一个
case
表达式,但被卡住了,以前从未使用过
substr