取opstaion的手机号码信息(符合11位长度的数字),若不符合手机号规则,则置空值

img


sql Oracle MySQL 正则表达式 取opstaion的手机号码信息(符合11位长度的数字),若不符合手机号规则,则置空值,



```sql
 一层一层往下套吧,如果是oracle得话很简单·····
SELECT CASE WHEN INSTR(SUBSTR(ID,INSTR(ID,'@')+1 ),'@')-1= 11 THEN SUBSTR(ID,INSTR(ID,'@')+1 ,INSTR(SUBSTR(ID,INSTR(ID,'@')+1 ),'@')-1)
                      WHEN INSTR(SUBSTR(ID,INSTR(SUBSTR(ID,INSTR(ID,'@')+1 ),'@')+3),'@')-1  = 11 THEN SUBSTR(SUBSTR(ID,INSTR(SUBSTR(ID,INSTR(ID,'@')+1 ),'@')+3),1,INSTR(SUBSTR(ID,INSTR(SUBSTR(ID,INSTR(ID,'@')+1 ),'@')+3),'@')-1)
                         END A , ID
FROM (
SELECT 'E@183.231.14@18434393264@12937120' AS ID UNION ALL
SELECT 'E@121.231.11.2@19034393234@1293712414@2141421111' UNION ALL
SELECT 'E@111.231.11.2@1293712414@2141421111@18854393234' UNION ALL
SELECT 'E@18854393234@1293712414@2141421111'  ) A 

```

select regexp_substr(opstaion,'\d{11}') from a

img