我的程序有参数,以逗号分隔值, 所以当我输入Parameter ='1,0,1'
时我想回归'一,零,一'?
答案 0 :(得分:1)
您可以使用 REPLACE 功能。
例如,
SQL> WITH DATA(str) AS(
2 SELECT '1,0,1' FROM dual
3 )
4 SELECT str,
5 REPLACE(REPLACE(str, '0', 'Zero'), '1', 'One') new_str
6 FROM DATA;
STR NEW_STR
----- ------------------------------------------------------------
1,0,1 One,Zero,One
SQL>
答案 1 :(得分:1)
此查询将列表拆分为数字,将数字转换为单词并将其与函数listagg
一起再次连接:
with t1 as (select '7, 0, 11, 132' col from dual),
t2 as (select level lvl,to_number(regexp_substr(col,'[^,]+', 1, level)) col
from t1 connect by regexp_substr(col, '[^,]+', 1, level) is not null)
select listagg(case
when col=0 then 'zero'
else to_char(to_date(col,'j'), 'jsp')
end,
', ') within group (order by lvl) col
from t2
输出:
COL
-------------------------------------------
seven, zero, eleven, one hundred thirty-two
此解决方案的限制是值范围介于0和5373484之间(因为5373484是函数to_date
的最大值)。
如果您需要更高的值,可以在this article中找到提示。