我有一个像这样的字符串:
Directory=Voice Active Directory A,ID=VT-AD1,Location=Canada,UserName=admin,Password=passw0rd,Selector=AD1
我正在编写一个函数,它将此值作为参数接收,另一个参数作为UserName
我需要从给定字符串admin
我正在搜索oracle中是否有一个RegEx来帮助这里。
这是我到目前为止所做的:
CREATE OR REPLACE FUNCTION GET_CSV_FIELD(Parameter_RowData IN CLOB, Parameter_Field_Name IN VARCHAR2 )
RETURN VARCHAR2
AS
Found_Index INTEGER;
End_Index INTEGER;
Pair_Index INTEGER;
Return_Result VARCHAR2(4000);
BEGIN
Found_Index := INSTR(Parameter_RowData, Parameter_Field_Name);
IF Found_Index > 0 THEN
End_Index := INSTR(Parameter_RowData, ',', Found_Index);
Pair_Index := INSTR(Parameter_RowData, '=', Found_Index);
IF End_Index = 0 THEN
Return_Result := '';
RETURN Return_Result;
END IF;
IF Pair_Index = 0 THEN
Return_Result := '';
RETURN Return_Result;
END IF;
Return_Result := SUBSTR(Parameter_RowData, Pair_Index + 1, End_Index - Pair_Index - 1);
ELSE
Return_Result := '';
END IF;
RETURN Return_Result;
END;
有更好的方法吗?感谢。
答案 0 :(得分:2)
您可以使用正则表达式执行此操作:
select substr(regexp_substr(str, 'UserName=[^,]+'), 10)
一般方法是
select substr(regexp_substr(str, v_param || '=[^,]+'), length(v_param) + 2)