PL\SQL varchar2 变量为 null
PL\SQL varchar2 variable with null
我在 SQL Developer 中有一个查询,变量 (varchar2) 中有一条记录是 JOYABCD。
使用记事本++查看它是这样写的:JOYnulABCD。所以实际上 JOY 和 ABCD 之间有一个空字符。
在 PL\SQL 中有没有办法摆脱这个 nul?
我尝试了以下内容:
regexp_replace(name_variable, '\0', NULL)
但是 R 说:不允许使用 nul 字符
为什么,R这么说?在 slq 中它起作用并消除了 nul 字符..
谢谢,
安德里亚
如果字符串 str
包含 chr(0)
(nul
字符),您可以像这样从字符串中删除它:
replace(str, chr(0))
这将是同一个字符串,每次出现的 chr(0)
都会从中删除。
演示:
这里我在 with
子句中创建了一个字符串 str
,但在现实生活中它应该是您的变量或列名。然后,我 "replace" chr(0)
使用正则表达式(如您所见,它什么都不做),并使用标准 REPLACE。我使用 DUMP 函数来显示字符串中的实际字符。正如您将看到的,对于原始字符串和正则表达式结果,第四个字符是 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
我在 SQL Developer 中有一个查询,变量 (varchar2) 中有一条记录是 JOYABCD。 使用记事本++查看它是这样写的:JOYnulABCD。所以实际上 JOY 和 ABCD 之间有一个空字符。
在 PL\SQL 中有没有办法摆脱这个 nul? 我尝试了以下内容: regexp_replace(name_variable, '\0', NULL)
但是 R 说:不允许使用 nul 字符
为什么,R这么说?在 slq 中它起作用并消除了 nul 字符..
谢谢, 安德里亚
如果字符串 str
包含 chr(0)
(nul
字符),您可以像这样从字符串中删除它:
replace(str, chr(0))
这将是同一个字符串,每次出现的 chr(0)
都会从中删除。
演示:
这里我在 with
子句中创建了一个字符串 str
,但在现实生活中它应该是您的变量或列名。然后,我 "replace" chr(0)
使用正则表达式(如您所见,它什么都不做),并使用标准 REPLACE。我使用 DUMP 函数来显示字符串中的实际字符。正如您将看到的,对于原始字符串和正则表达式结果,第四个字符是 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