首页 > 解决方案 > 选择查询oracle中具有特定长度和字符的数据

问题描述

我的表在我的 oracle 数据库中看起来像这样;

ID | NI       | NT      | MB         |  ETC
-------------------------------------------
1  |1234567   |         |            | comments  //valid
2  |9654875   |         |            | jhdsd     //valid
3  |43gf543   |         |            | dd        //in-valid
4  |123       |         |            | dfds      //in-valid
5  |12654332  |         |            | dffd      //in-valid
6  |          |542      |            | comments  //valid
7  |          |362      |            | jhdsd     //valid
8  |          |9631     |            | dd        //invlaid
9  |          |r45      |            | dfds       //in-valid
10 |          |56       |            | dffd      // in-valid 
11 |          |         |03121234567 | comments  //valid
12 |          |         |03874514414 | jhdsd    //valid
13 |          |         |05764544444 | dd      //in-valid as not starts with 03
14 |          |         |30010101019 | dfds    //in-valid
15 |          |         |038f5678543 | dffd    //in-valid

我喜欢使用选择查询仅选择有效记录

在哪里

结果应该是这样的;

1  |1234567   |         |            | comments  
2  |9654875   |         |            | jhdsd    
3  |          |542      |            | comments  
4  |          |362      |            | jhdsd    
5  |          |         |03121234567 | comments  
6  |          |         |03874514414 | jhdsd  

标签: oracle

解决方案


尝试这个:

  • NI 长度应固定为 7 和所有,以任何数字开头

    REGEXP_LIKE(NI, '^\d{7}$')   
    
  • NT 长度应固定为 3 和所有,以任何数字开头

    REGEXP_LIKE(NT, '^\d{3}$')   
    
  • 数字 MB 长度应固定为 11,以 03 和所有数字开头。

    REGEXP_LIKE(MB, '^03\d{9}$')
    

推荐阅读