Обрезать ведущий 0 для длины больше, чем х в наборе данных - PullRequest
0 голосов
/ 28 сентября 2018

Возьмем, к примеру, эту таблицу

Таблица 1:

Name.  ID
David 00513
George 0523
Carmen 3216

В этой таблице я хочу обрезать ведущий 0 только для Дэвида, потому что его идентификатор больше 4 цифр.Я не хочу, чтобы обрезал лидирующие 0 для Джорджа. Какой лучший способ сделать это в SQL?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Если вас не интересует начальная нарезка ненулей, тогда

select substr(ID,-4);

должно работать.Если есть возможность иметь более 4 цифр с ненулевым начальным значением, используйте

 select printf('%04d', ID);

(при условии, что все символы в ID являются цифрами)

0 голосов
/ 28 сентября 2018

Самый простой способ:

select right(id, 4)

Если вас интересуют идентификаторы длиннее 4 символов, но с ненулевыми начальными символами:

select (case when length(id) > 4 
             then replace(ltrim(replace(id, '0', ' ')), ' ', '0')
             else id
        end)
...