[英]PL\SQL varchar2 variable with null
我在SQL Developer中有一个查询,并且在变量(varchar2)中有一条记录是JOYABCD。 使用usb notepad ++对其进行研究的方式如下:JOYnulABCD。 因此,实际上在JOY和ABCD之间存在一个零角色。
在PL \\ SQL中有没有办法摆脱这个问题? 我尝试了以下操作:regexp_replace(name_variable,'\\ 0',NULL)
但是R说:不允许使用nul字符
为什么,R这样说? 在slq中,它可以工作并消除nul字符。
谢谢你,安德里亚
如果字符串str
包含chr(0)
( nul
字符),则可以将其从字符串中删除,如下所示:
replace(str, chr(0))
这将是相同的字符串,每次出现的chr(0)
从中删除。
演示 :
在这里,我在with
子句中创建了一个字符串str
,但实际上,它应该是您的变量或列名。 然后,我用正则表达式(如您将看到的NOTHING)“替换” chr(0)
),并用标准REPLACE替换。 我使用DUMP函数显示字符串中的实际字符。 如您所见,第四个字符为原始字符串和regexp结果的nul
(值0
),但是当我使用标准Oracle函数REPLACE(不基于正则表达式)时,将删除0。
with inputs as ( select 'JOY' || chr(0) || 'ABC' as str from dual )
select dump(str) as dump_str,
dump(regexp_replace(str, chr(0))) as dump_after_regexp_replace,
dump(replace(str, chr(0))) as dump_after_replace
from inputs
;
DUMP_STR DUMP_AFTER_REGEXP_REPLACE DUMP_AFTER_REPLACE
-------------------------------- -------------------------------- ------------------------------
Typ=1 Len=7: 74,79,89,0,65,66,67 Typ=1 Len=7: 74,79,89,0,65,66,67 Typ=1 Len=6: 74,79,89,65,66,67
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.