繁体   English   中英

PL \\ SQL varchar2变量为null

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM