ВЫБЕРИТЕ To_Number ('0001000') ОТ ДВОЙНОГО; - PullRequest
0 голосов
/ 20 января 2020
CASE 
   WHEN IS_NUMBER(SUBSTR(REGEXP_REPLACE (SSN, ''\D'', ''''),-4)) IS NOT NULL 
     THEN To_Number(SUBSTR(REGEXP_REPLACE (SSN, ''\D'', ''''),-4)) 
   ELSE 0000 
END AS SSN4,

SSN в исходной таблице (varchar2): 123-23-1234, XX-XX-XXXX, 123-23-0001 Ожидаемый результат (число): 1234, 0000, 0001 соответственно

1 Ответ

0 голосов
/ 20 января 2020

Вы должны сохранить свое первоначальное значение. Например, сначала сохраните ее во временной таблице сеансов и присоединитесь к ней в конце (не забудьте очистить ее ранее и добавьте подсказку on commit preserve rows, которая необходима, если вы хотите прочитать данные из курсора) Тип.

Number Oracle не имеет информации о ведущих нулях. Например, 0012 совпадает с 12 в памяти. Поэтому лучше сохранить отображение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...