Если у меня есть необработанная строка, и я отбрасываю ее в varchar2, а затем отбрасываю обратно в raw, все исходные данные все еще там. Однако, если я передам его в 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, что линия 13 запускается после v_string объединяется с пустой строкой. Но выход таков:
Raw string: C5C6C7
New raw string: C5C6
Новое сырье строка будет такой же, если я ничего на нем не конкатенации, но если я что-нибудь добавить к строке, даже перед ним, он потеряет эта последняя часть. Это происходит только с определенными символами. Если я закончил с «61» (нижний регистр «a»), то ничего не будет потеряно.
Я использую Oracle SQL Developer v.3.2.20.09
Это было запутанным меня на некоторое время теперь, и я не уверен, если я что-то отсутствует, или если это просто ошибка, но любой помощь будет высоко оценена.
Я запустил ваш скрипт в Toad - Oracle 11g и не получил тот же результат. 'Исходная строка: C5C6C7 Новая необработанная строка: C5C6C7 PL/SQL процедура успешно завершена.' –