可能重複:
How to best split csv strings in oracle 9i轉換T-SQL函數PL/SQL
你能幫我轉換下面的T-SQL funcntion到Oracle。該功能將類似
service|nvretail;language|de;yyyy|2011;
的字符串轉換爲表格。
我遇到的主要問題是臨時表的使用。我在Oracle中找不到任何等價物。
CREATE FUNCTION [dbo].[TF_ConvertPara]
(
@parastringNVARCHAR(max)
)
RETURNS @para TABLE
(
[Key] varchar(max),
[Value] varchar(max)
)
begin
DECLARE @NextString NVARCHAR(40)
DECLARE @Pos1 INT
DECLARE @Pos2 INT
DECLARE @NextPos INT
DECLARE @Delimiter1 NCHAR=';'
DECLARE @Delimiter2 NCHAR='|'
if substring(@paraString, len(@paraString) - 1, 1) <> @Delimiter1
SET @paraString = @paraString + @Delimiter1
SET @Pos1 = charindex(@Delimiter1, @paraString)
WHILE (@pos1 <> 0)
BEGIN
SET @NextString = substring(@paraString, 1, @Pos1 - 1)
SET @paraString = substring(@paraString, @pos1 + 1, len(@paraString))
SET @pos1 = charindex(@Delimiter1, @paraString)
SET @Pos2 = charindex(@Delimiter2, @NextString)
if (@Pos2 > 0)
begin
insert into @para
values
(substring(@NextString, 1, @Pos2 - 1),
substring(@NextString, @Pos2 + 1, len(@NextString)))
end
END
return;
end
在此先感謝您。
@Lieven,OP沒有指定Oracle 9i。 Oracle 10g和11g比9i有更強大的功能來分割字符串。 – Ollie
@Ollie - 你是對的,但實質上,TSQL所做的就是分割一個字符串。在任何特定環境下都可以找到很多示例。 +1 *你的*答案btw。 –
看到這個以及:http://stackoverflow.com/questions/8099430/does-oracle-provide-the-way-of-returning-multiple-substrings-from-a-string-clob/8100085#8100085 –