如何收集 Oracle 中文本字符串左侧的数据 SQL

How to gather data left of a string of text in Oracle SQL

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

SELECT Cust_Desc
FROM All_Cust_Data

Cust_Descreturns以下格式的信息

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

我需要拆分 , Region Code 中所有内容的左侧数据,因此查询 return 仅 John, Doe, Client ID 7

使用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.*','') as "Result String"
  from All_Cust_Data;

    Result String
-----------------------
John, Doe, Client ID 7

Rextester Demo

尝试组合使用 substr 和 instr 函数

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

例如:

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, 后面的那个)