Удалить 2 символа в оракуле sql - PullRequest
0 голосов
/ 29 мая 2019

У меня есть столбец, который содержит 12 цифр, но пользователь хочет только сгенерировать 10 цифр.

Я попробовал триммер, функцию ltrim, но ничего не получалось. Ниже приведены запросы, которые я пробовал.

ltrim('10', 'column_name')
ltrim('10', column_name)
ltrim(10, column_name)

Например, у меня есть столбец, который содержит 12-значное число

100000000123
100000000456
100000000789

и ожидаемый результат, который я хочу получить

0000000123
0000000456
0000000789

Ответы [ 2 ]

4 голосов
/ 29 мая 2019

Чтобы извлечь последние 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' в этом случае;скорее всего, не желаемый результат.

0 голосов
/ 29 мая 2019

попробуйте использовать SUBSTR(column_name, 2)

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