에서 빈 문자열로 연결하면 문자열의 마지막 문자가 손실됩니다. 원시 문자열이 있고이를 varchar2로 캐스팅 한 다음 원시로 다시 캐스트하면 원본 정보가 모두 남아 있습니다. 그러나, 그것을 varchar2로 캐스팅 한 다음 빈 문자열을 포함하여 그 위에 아무 것도 연결하지 않으면 마지막 문자가 손실됩니다.Oracle SQL Developer
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 사이의 유일한 차이점은 빈 문자열로 연결됩니다 v_string 후에 실행되는 라인 13 : 이 내가 그것을 복제하는 데 사용하고 코드입니다. 내가 아무것도을 연결하지 않는 경우
Raw string: C5C6C7
New raw string: C5C6
새로운 원시 문자열이 같은 될 것입니다,하지만 난 심지어 그것의 앞에, 문자열에 아무것도를 추가하는 경우, 그것은 잃게됩니다 :하지만 출력이가 그 마지막 부분. 특정 문자에서만 발생합니다. '61'(소문자 'a')로 원시를 끝내면 아무 것도 손실되지 않습니다.
나는이 잠시 동안 지금 나를 혼란 된 v.3.2.20.09
오라클 SQL Developer를 사용하고 있는데 이것은 단지 버그의 경우 나는 뭔가를 놓치고 있는지 확실하지 않습니다 또는, 그러나 어떤 도움을 많이 주시면 감사하겠습니다.
Toad - Oracle 11g에서 스크립트를 실행했지만 동일한 결과를 얻지 못했습니다. '원시 문자열 : C5C6C7 새로운 원시 문자열 : C5C6C7 PL/SQL 절차가 성공적으로 완료되었습니다 .' –