如果我有一个原始字符串并将其转换为 varchar2,然后将其转换回原始字符串,则所有原始信息仍然存在。但是,如果我将它转换为 varchar2 然后将任何东西连接到它上面(包括一个空字符串),我会丢失最后一个字符。这是我用来复制它的代码:
SET SERVEROUTPUT ON;
DECLARE
raw_string RAW(100);
v_string VARCHAR2(100);
raw_string2 RAW(100);
BEGIN
raw_string := 'C5C6C7';
v_string := utl_raw.cast_to_varchar2(raw_string);
dbms_output.put_line('Raw string: ' || utl_raw.cast_to_raw(v_string) );
v_string := v_string || '';
dbms_output.put_line('New raw string: ' || utl_raw.cast_to_raw(v_string) );
END;
/
第 11 行和第 13 行之间的唯一区别是第 13 行在 v_string 与空字符串连接之后运行。但输出是这样的:
Raw string: C5C6C7
New raw string: C5C6
如果我不连接任何东西,新的原始字符串将是相同的,但如果我在字符串中添加任何东西,即使在它的前面,它也会丢失最后一部分。它只发生在某些字符上。如果我以'61'(小写'a')结束原始数据,则不会丢失任何内容。
我正在使用 Oracle SQl Developer v.3.2.20.09
这让我困惑了一段时间,我不确定我是否遗漏了什么或者这只是一个错误,但任何帮助将不胜感激。