Oracle 如何在单行中处理动态变量字符串值

Oracle 如何在单行中处理动态变量字符串值,oracle,plsql,Oracle,Plsql,这是我的PL/SQL块。执行时,“V_QUERY”变量的结果分成两行,如下所示: '%[CDATA[/documents/%/4min.png /%'. 我如何在一行中获得它,如下所示: 声明 光标c1为 选择rtrim(ltrim(substr(typesettings,7),“”),““”)作为类型设置 从特拉申特里 其中rownum

这是我的PL/SQL块。执行时,“V_QUERY”变量的结果分成两行,如下所示:

'%[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
.......