用hive SQL写个对手机号字段去除空格后,能匹配+86开头的手机号的代码
时间: 2023-09-06 14:04:33 浏览: 117
### 回答1:
用 Hive SQL 过滤出以 86 开头的手机号并去除空格,可以使用如下代码:
```
SELECT TRIM(BOTH ' ' FROM mobile_number) AS mobile_number
FROM your_table
WHERE mobile_number LIKE '86%'
```
其中,`your_table` 是你的表名,`mobile_number` 是你的手机号字段。`TRIM(BOTH ' ' FROM mobile_number)` 用于去除空格,`WHERE mobile_number LIKE '86%'` 用于过滤以 86 开头的手机号。
### 回答2:
可以使用Hive SQL中的正则表达式函数来实现对手机号字段去除空格,并匹配86开头手机号的代码。假设手机号字段名为phone,可以按照以下步骤编写代码:
1. 创建一个临时表temp_table,该表包含去除空格后的手机号列,并将手机号字段匹配到86开头的手机号筛选出来。
```sql
CREATE TABLE temp_table AS
SELECT regexp_replace(phone, '\\s', '') AS cleaned_phone
FROM your_table_name
WHERE phone LIKE '86%';
```
2. 如果需要将结果保存至新表中,可以使用INSERT OVERWRITE语句将结果插入新表new_table。
```sql
INSERT OVERWRITE TABLE new_table
SELECT *
FROM temp_table;
```
3. 如果只需要输出结果,可以直接使用SELECT语句。
```sql
SELECT *
FROM temp_table;
```
以上代码将去除手机号字段中的空格,并筛选出以86开头的手机号,保存至临时表temp_table或新表new_table中,或者直接输出结果。
### 回答3:
可以使用Hive SQL中的正则表达式函数来实现对手机号字段去除空格并匹配以86开头的手机号。
假设手机号字段名为phone_number,可以使用如下代码实现:
```
SELECT phone_number
FROM your_table
WHERE regexp_replace(phone_number, ' ', '') RLIKE '^86[0-9]+'
```
解释如下:
1. `regexp_replace(phone_number, ' ', '')` :使用`regexp_replace`函数将手机号字段中的空格替换为空字符串,去除空格。
2. `RLIKE` :使用正则表达式匹配手机号字段。
3. `'^86[0-9]+'` :表示以"86"开头,后跟数字0-9的手机号。
以上代码将返回匹配以86开头的手机号的记录。