这是我的PL / SQL块。当我执行它时,'V_QUERY'变量的结果分成两行,如:
'%[CDATA[/documents/%/4min.png
/%'.
如何在以下一行中获取它:enter image description here
'%[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;
答案 0 :(得分:0)
您很可能需要从chr(10)
的末尾修剪typesettings
。修剪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)
都会简单地删除。