我想拆分字符串逗号分隔并在 Oracle 12c 中加入另一个 table 上的值
I want to split string comma separated and join the values on another table in Oracle 12c
这是我的 Sql 代码,它工作正常但在 Oracle 中不工作。
开始
Declare @ErrorCodes varchar(max)
if(isnull(@ErrorCodes,'') <> '')
Begin
WITH TempTable as
(
SELECT * FROM split(@ErrorCodes,',')
)
SELECT ErrorDescription
FROM TABLE E
INNER JOIN TempTable
ON ltrim(rtrim(TempTable.data)) = E.ErrorCode
End
结束
您的代码是 SQL 服务器的。
在 Oracle 中,您将使用分层连接方式进行此类处理。
假设 CSV 字符串是 1,2,3
,试试这个
select regexp_substr('1,2,3', '[^,]+', 1, level) as error_code
from dual
connect by level <= regexp_count('1,2,3', ',') + 1
select ERRORDESCRIPTION INTO v_ErrorDesc from TABLE where Errorcode in (
select cast(COLUMN_VALUE as Nvarchar2(4000)) ErrorCode from (
SELECT 列 A 来自 TABLEA
其中 columnID = v_caseid )
, xmltable(('"' || REPLACE(columnA, ',', '","') || '"')));
这对我有用我自己解决了..无论如何谢谢!!
这是我的 Sql 代码,它工作正常但在 Oracle 中不工作。
开始
Declare @ErrorCodes varchar(max)
if(isnull(@ErrorCodes,'') <> '')
Begin
WITH TempTable as
(
SELECT * FROM split(@ErrorCodes,',')
)
SELECT ErrorDescription
FROM TABLE E
INNER JOIN TempTable
ON ltrim(rtrim(TempTable.data)) = E.ErrorCode
End
结束
您的代码是 SQL 服务器的。
在 Oracle 中,您将使用分层连接方式进行此类处理。
假设 CSV 字符串是 1,2,3
,试试这个
select regexp_substr('1,2,3', '[^,]+', 1, level) as error_code
from dual
connect by level <= regexp_count('1,2,3', ',') + 1
select ERRORDESCRIPTION INTO v_ErrorDesc from TABLE where Errorcode in ( select cast(COLUMN_VALUE as Nvarchar2(4000)) ErrorCode from ( SELECT 列 A 来自 TABLEA 其中 columnID = v_caseid ) , xmltable(('"' || REPLACE(columnA, ',', '","') || '"')));
这对我有用我自己解决了..无论如何谢谢!!