我现在有一个表,里面有一个long类型的字段,字段里面存储的是 83.362 82.284 81.422 80.862 80.431 80.000 ,这些内容,每个数字之间用空格分开,现在想把这些数字拆成表的形式,如下:表内容:
83.362
82.284
81.422
80.862
80.431
80.000 请问大家有什么好的方法吗??????是long类型的。
83.362
82.284
81.422
80.862
80.431
80.000 请问大家有什么好的方法吗??????是long类型的。
RETURN str_split
PIPELINED
AS
v_length NUMBER := LENGTH(p_string);
v_start NUMBER := 1;
v_index NUMBER;
BEGIN
WHILE(v_start <= v_length)
LOOP
v_index := INSTR(p_string, p_delimiter, v_start); IF v_index = 0
THEN
PIPE ROW(SUBSTR(p_string, v_start));
v_start := v_length + 1;
ELSE
PIPE ROW(SUBSTR(p_string, v_start, v_index - v_start));
v_start := v_index + 1;
END IF;
END LOOP; RETURN;
END V_splitstr;拆分字符串函数
原来将LONG转换为VARCHAR2这么麻烦
还好从来就很听ORACLE的话,没有用LONG类型
CREATE OR REPLACE PROCEDURE split_str(lstr IN LONG, sep IN VARCHAR2) IS
item VARCHAR2(200);
str VARCHAR2(30000);
BEGIN
SELECT lstr INTO str FROM dual;
str := sep || str || sep;
FOR i IN 1 .. length(str) - length(REPLACE(str, sep)) - 1 LOOP
item := substr(str,
instr(str, sep, 1, i) + 1,
instr(str, sep, 1, i + 1) -
instr(str, sep, 1, i) - 1);
END LOOP;
END;
/
你再去GOOGLE下,应该有方法转换的,ORACLE里转换不行,好像还有程序段的转换
好像程序前端的转换比较方便
oracle QQ群:54775466
欢迎您的到来
大家一起探讨。