【问题标题】:How to gather data left of a string of text in Oracle SQL如何在 Oracle SQL 中收集文本字符串左侧的数据
【发布时间】:2019-06-11 00:32:12
【问题描述】:

我有一个用于返回所有客户数据的 SQL,但是,它都在一个字段中。我使用的 SQL 是:

SELECT Cust_Desc
FROM All_Cust_Data

Cust_Desc 以下列格式返回以下信息

John, Doe, Client ID 7, Region Code, 4....

我需要从, Region Code 中拆分所有数据左侧的数据,因此查询只返回John, Doe, Client ID 7

【问题讨论】:

    标签: sql regex oracle regexp-replace


    【解决方案1】:

    使用regexp_replace

    with All_Cust_Data(Cust_Desc) as
    (
     select 'John, Doe, Client ID 7, Region Code, 4....' from dual
    )
    select regexp_replace(Cust_Desc,'(.*),.\Region Code.*','\1') as "Result String"
      from All_Cust_Data;
    
        Result String
    -----------------------
    John, Doe, Client ID 7
    

    Rextester Demo

    【讨论】:

      【解决方案2】:

      尝试结合使用 substr 和 instr 函数

      select Cust_Desc, substr(Cust_Desc,0,INSTR(Cust_Desc,'Region Code')-1) from All_Cust_Data;
      

      【讨论】:

        【解决方案3】:

        例如:

        SQL> with all_cust_data (cust_Desc) as
          2    (select 'John, Doe, Client ID 7, Region Code, 4....' from dual)
          3  select rtrim(trim(substr(cust_Desc, 1, instr(cust_desc, 'Region Code') - 1)), ',') result
          4  from all_cust_data;
        
        RESULT
        ----------------------
        John, Doe, Client ID 7
        
        SQL>
        

        它使用旧的SUBSTR + INSTR 组合; TRIM 函数用于删除尾随空格和逗号(数字后面的一个 7,

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-02-23
          • 2017-06-26
          • 2013-12-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          相关资源
          最近更新 更多