用hive SQL写个对手机号字段去除空格后匹配手机号的代码,+86开头的也算合规
时间: 2023-08-31 22:30:19 浏览: 165
电话号码匹配
5星 · 资源好评率100%
### 回答1:
在 Hive SQL 中,可以使用 `trim()` 函数去除字符串中的空格,并使用正则表达式 `^(86)?1\\d{10}$` 匹配手机号。
示例代码:
```
SELECT *
FROM table
WHERE trim(phone) REGEXP '^(86)?1\\d{10}$'
```
其中 `table` 是需要查询的表,`phone` 是手机号字段。
这个正则表达式是匹配手机号的, ^(86)?1\\d{10}$ 这个正则表达式是匹配以86开头的手机号和1开头的手机号的
### 回答2:
使用Hive SQL编写代码来去除手机号字段中的空格后进行匹配,包括86开头的手机号。下面给出一个示例代码:
```sql
SELECT phone_number
FROM your_table
WHERE regexp_replace(phone_number, ' ', '') RLIKE '^86?\\d{11}$'
```
解释:
- `your_table`是你要查询的表名。
- `phone_number`是手机号字段的列名。
- `regexp_replace(phone_number, ' ', '')`用于替换手机号字段中的空格为空字符串。
- `RLIKE '^86?\\d{11}$'`用于匹配去除空格后的手机号是否合规。其中,`^86?`表示以可选的'86'开头,`\\d{11}`表示接下来的11位数字(总共11位数字)。
- 查询结果将返回符合条件的手机号。
需要注意的是,手机号需满足以下条件:
- 号码中可以包含空格,例如:`'139 1234 5678'`。
- 号码可以以'86'开头,例如:`'8613912345678'`。
此代码可帮助你筛选出匹配规则的手机号,包括去除空格后开头为'86'的手机号。
### 回答3:
在Hive SQL中,可以使用正则表达式函数进行手机号字段的去除空格和匹配。下面是一个示例代码:
```sql
SELECT *
FROM your_table
WHERE regexp_replace(your_phone_number_column, '\\s+', '') RLIKE '^((\\+?86)|0)?1\\d{10}$'
```
上述代码中,假设手机号字段存储在`your_table`表中的`your_phone_number_column`列中。首先,使用`regexp_replace`函数去除手机号字段中的所有空格,`\\s+`表示匹配一个或多个空格。
接着,使用`RLIKE`关键字进行正则表达式匹配。正则表达式`'^((\\+?86)|0)?1\\d{10}$'`用于匹配手机号码。其中,`^`表示开头,`((\\+?86)|0)?`表示匹配0或1次+86或0,`1`表示数字1,`\\d{10}`表示匹配10个数字,`$`表示结尾。
这样,以上代码将返回匹配手机号的记录,包括以86开头的手机号和去除空格后的手机号。
阅读全文