小编Sea*_* M.的帖子

在Oracle SQL Developer中与字符串连接时,String丢失最后一个字符

如果我有一个原始字符串并将其转换为varchar2然后将其转换为raw,则所有原始信息仍然存在.但是,如果我将它转换为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; 
/
Run Code Online (Sandbox Code Playgroud)

第11行和第13行之间的唯一区别是第6行是在v_string与空字符串连接之后运行的.但输出是这样的:

Raw string:     C5C6C7
New raw string: C5C6
Run Code Online (Sandbox Code Playgroud)

如果我不连接任何内容,新的原始字符串将是相同的,但如果我向字符串添加任何内容,即使在它的前面,它将丢失最后一部分.它只发生在某些字符上.如果我以'61'(小写'a')结束原始,那么什么都不会丢失.

我正在使用Oracle SQl Developer v.3.2.20.09

这一直困扰我一段时间,我不确定我是否遗漏了什么或者这只是一个错误,但任何帮助都会非常感激.

sql oracle plsql character-encoding oracle-sqldeveloper

1
推荐指数
1
解决办法
612
查看次数