如何收集 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
尝试组合使用 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,
后面的那个)
我有一个 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
尝试组合使用 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,
后面的那个)