【发布时间】:2020-10-15 06:14:58
【问题描述】:
我想根据他们的电话号码计算每个客户分组的总订单,但问题是电话号码的格式很乱。 (我选择按他们的电话号码分组,因为有时名字不同,可能是他们的全名或只是昵称)
这是一个例子
+-------+--------------+----------+------------+
| 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_REPLACE(TRIM(phone_number),r'^8','+62') AS phone_number,但它仅适用于 1 个条件。
如果有多个条件,我可以使用regexp_replace 吗?
【问题讨论】:
-
我们怎么知道
821345需要以+62为前缀,而7712345应该只需要+? -
这就是我要问的,所有本地号码都以
082xxxxx或82xxxx开头。其他是外国号码,只需要+。
标签: sql postgresql google-bigquery