Удаление начальных нулей из поля в операторе SQL - PullRequest
91 голосов
/ 18 сентября 2008

Я работаю над запросом SQL, который читает из базы данных SQLServer для создания файла извлечения. Одно из требований для удаления начальных нулей из определенного поля, которое является простым VARCHAR(10) полем. Так, например, если поле содержит «00001A», инструкция SELECT должна вернуть данные как «1A».

Есть ли в SQL способ легко удалить ведущие нули таким образом? Я знаю, что есть функция RTRIM, но это, кажется, только для удаления пробелов.

Ответы [ 15 ]

0 голосов
/ 10 января 2018

вы можете попробовать это SELECT REPLACE(columnname,'0','') FROM table

0 голосов
/ 29 ноября 2016
select CASE
         WHEN TRY_CONVERT(bigint,Mtrl_Nbr) = 0
           THEN ''
           ELSE substring(Mtrl_Nbr, patindex('%[^0]%',Mtrl_Nbr), 18)
       END
0 голосов
/ 13 февраля 2016

Я позаимствовал идеи выше. Это не быстро и не элегантно. но это точно.

CASE

WHEN left(column, 3) = '000' THEN right(column, (len(column)-3))

WHEN left(column, 2) = '00' THEN right(a.column, (len(column)-2))

WHEN left(column, 1) = '0' THEN right(a.column, (len(column)-1))

ELSE 

END

0 голосов
/ 20 августа 2014
select ltrim('000045', '0') from dual;

LTRIM
-----
45

Это должно сделать.

0 голосов
/ 08 апреля 2014

Чтобы удалить ведущий 0 из месяца, следующий оператор обязательно сработает.

SELECT replace(left(Convert(nvarchar,GETDATE(),101),2),'0','')+RIGHT(Convert(nvarchar,GETDATE(),101),8) 

Просто замените GETDATE() на поле даты вашей таблицы.

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