我试图创建一个varChar表来格式化字符串
(基本上我试图做一个骗子split()
功能)。
所以如果我这样做
type tableOfStrings is table of varchar2(50);
vWords tableOfStrings := tableOfStrings ('a','few','words');
dbms_output.put_line(vwords.count); -- 3
但如果我尝试
type tableOfStrings is table of varchar2(50);
vTemp varchar(300) := '''a'',''few'',''words''';
vWords tableOfStrings := tableOfStrings (vTemp);
dbms_output.put_line(vwords.count); -- 1 (it's a single string 'a','few','words')
我想将一个字符串传递给一个函数,并将每个单词添加到表中。
像
这样的东西FUNCTION FLABELFORMAT(pMyString in varchar2) return varchar2
type tableOfStrings is table of varchar2(50);
vWords tableOfStrings := tableOfStrings (pMyString);
for i in 1 .. vWords.count loop
{do some cool stuff}
end loop;
END FLABELFORMAT
如何使用vWords tableOfStrings := tableOfStrings (pMyString);
之类的内容完成并将每个值添加到表中?
TIA
答案 0 :(得分:0)
根据this answer,试试这个:
SELECT regexp_substr('a,few,words', '[^,]+', 1, LEVEL)
FROM dual
CONNECT BY regexp_substr('a,few,words', '[^,]+', 1, LEVEL) IS NOT NULL;