Using LPAD requirement, все мои выражения - это символы. Почему я получаю сообщение ORA-01722: invalid number
?Почему ошибка недопустимого числа при работе со строковыми функциями и строковыми данными?
Я хочу, чтобы оставить pad значение моего varchar2 с ведущими нулями. Все мои airpor_codes до трех байтов, и я хочу, если нужно, оставить левую панель с ведущими нулями. В этом примере я хочу 0777
и 0LAX
.
/* This works */
with numeric_airport_code
as (select '777' as airport from dual)
select airport,
to_char(airport,'0000') as to_char_padding,
lpad(airport,4,'000') as lpadding
from numeric_airport_code;
/* This gives invalid number error */
with alpha_airport_code
as (select 'LAX' as airport from dual)
select airport,
to_char(airport,'000') as to_char_padding,
lpad(airport,4,'000') as lpadding
from alpha_airport_code;
Я не знал, что to_char преобразован в число перед преобразованием обратно в char. Спасибо за объяснение. – zundarz
@zundarz - существует две версии 'to_char()'; один берет номер, другой - дату. Если вы передаете любой другой тип данных, он должен быть неявно преобразован либо в номер, либо в дату, либо вообще не будет никакой подходящей функции. Если вы передаете строку, это преобразование относится к числу. –