2015-02-24 4 views
1

У меня есть переменная типа StringBuffer, которая имеет нулевой символ i.e. '\ 0' intermediate. Я могу правильно напечатать переменную с нулевым символом. Но когда я пытаюсь вставить эту переменную в таблицу Oracle, я не могу вставить всю переменную StringBuffer; только часть до '\ 0'. Столбец, в который я вставляю эту переменную, имеет тип данных как varchar2 (50). Я не знаю, почему это происходит. Может быть, оракул не разрешает строку с нулевыми символами. Я знаю, что однажды «\ 0» встречается в строке, его обрабатывают как конец строки. Вот что я пыталсяВставить строку с нулевым символом в таблице оракула

StringBuffer buffer = new StringBuffer(); 
buffer.append("Vishal,"); 
buffer.append("Tavande,"); 
buffer.append('\0'); 
buffer.append("Kolhapur"); 
System.out.println(buffer); 

Это показывает мне выход, как «Вишал, Tavande, Колхапура». Когда я помещаю этот буфер в таблицу, я вижу только «Vishal, Tavande»,

Пожалуйста, расскажите, как вставить строку с нулевым символом char.

+0

Просто из любопытства - почему вы пытаетесь сознательно поставить нуль там? –

+0

Я хочу поместить значения переменных из структуры в переменную string/StringBuffer для цели аудита. – Vishal

+0

Обычно, если у вас есть нуль в вашей структуре - она ​​будет действительной нулевой или как «\ 0»? Мне просто интересно, почему вы пытаетесь заставить «\ 0» ... –

ответ

3

Да, в Oracle Varchar2 ведет себя как NULL-terminated STRING.

Вы можете найти в этом документе http://docs.oracle.com/cd/B14117_01/appdev.101/b10779/oci03typ.htm

Так, попробовать другой символ вместо \0

+0

Что я могу попробовать вместо \ 0? – Vishal

+0

Ну, это зависит от вашей логики. –

Смежные вопросы