Oracle 如何在单行中处理动态变量字符串值
这是我的PL/SQL块。执行时,“V_QUERY”变量的结果分成两行,如下所示:Oracle 如何在单行中处理动态变量字符串值,oracle,plsql,Oracle,Plsql,这是我的PL/SQL块。执行时,“V_QUERY”变量的结果分成两行,如下所示: '%[CDATA[/documents/%/4min.png /%'. 我如何在一行中获得它,如下所示: 声明 光标c1为 选择rtrim(ltrim(substr(typesettings,7),“”),““”)作为类型设置 从特拉申特里 其中rownum
'%[CDATA[/documents/%/4min.png
/%'.
我如何在一行中获得它,如下所示:
声明
光标c1为
选择rtrim(ltrim(substr(typesettings,7),“”),““”)作为类型设置
从特拉申特里
其中rownum<2;
v_query varchar2(32767);
开始
对于c1中的r1
环
v|u query:=''“%[CDATA[/documents/%/”| | | r1.typesettings | |'/%'”;
dbms_output.put_行(v_查询);
端环;
结束;
您很可能需要从字体设置的末尾修剪chr(10)
。修剪chr(13)
可能不会有什么坏处,因为它可能也存在
假设您的输入字符串中没有需要保留的双引号,您可以一次完成几件事:而不是rtrim(ltrim(…)
(它应该是trim(…)
,无论如何,它做同样的事情并且更简单,只调用一个函数而不是两个),您可以使用translate
:
select translate(substr(typesettings, 7), 'x"' || chr(10) || chr(13), 'x') as typesettings
.......
请注意最后两个参数中的x
;它实际上没有做任何事情,它只是围绕translate
函数的限制工作(这反过来是由于Oracle将空字符串处理为NULL
)。在本例中,translate
将用x
替换输入字符串中的每个x
,以及出现的每个“
,chr(10)
和chr(13)
将被简单删除。请给出一个您想要获得的输出示例。r1。typesettings
结尾可能有一个换行符。请显示从trashentry
中选择转储(typesettings)显示的内容(如果太长,显示最后几个字符代码)。谢谢@Rene,结果为“%[CDATA”[/document/%/4min.png/%%但我需要单行,因为“%[CDATA[/documents/%/4min.png/%”表示单行
declare
cursor c1 is
select rtrim(ltrim(substr(typesettings, 7), '"'), '"') as typesettings
from trashentry
where rownum < 2;
v_query varchar2(32767);
begin
for r1 in c1
loop
v_query := '''%[CDATA[/documents/%/' || r1.typesettings || '/%''';
dbms_output.put_line(v_query);
end loop;
end;
select translate(substr(typesettings, 7), 'x"' || chr(10) || chr(13), 'x') as typesettings
.......