Чтобы извлечь последние 10 символов входной строки, независимо от длины строки (поэтому это будет работать, если некоторые входные данные имеют 10 символов, около 12 и около 15 символов), вы можете использовать отрицательную начальную позицию в substr
:
substr(column_name, -10)
Например:
with
my_table(column_name) as (
select '0123401234' from dual union all
select '0001112223334' from dual union all
select '12345' from dual union all
select '012345012345' from dual
)
select column_name, substr(column_name, -10) as substr
from my_table;
COLUMN_NAME SUBSTR
------------- ----------
0123401234 0123401234
0001112223334 1112223334
12345
012345012345 2345012345
Обратите внимание, в частности, на третий пример.Вход имеет только 5 цифр, поэтому очевидно, что вы не можете получить из него 10-значное число.Результат равен NULL (не определено).
Обратите внимание, что если вы используете что-то вроде substr(column_name, 3)
, вы получите только '345'
в этом случае;скорее всего, не желаемый результат.