Удаление ведущих нулей из поля в инструкции SQL
Я работаю над SQL-запросом, который читает из базы данных SQLServer для создания файла извлечения. Одно из требований для удаления ведущих нулей из конкретного поля, которое является простым
13 ответов:
select substring(substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 20), patindex('%[^0]%',substring('B10000N0Z', patindex('%[0]%','B10000N0Z'), 20)), 20)
возвращает
N0Z
, то есть избавится от ведущих нулей и всего, что будет перед ними.
У меня была такая же потребность и использовал это:
select case when left(column,1) = '0' then right(column, (len(column)-1)) else column end
Если вы хотите, чтобы запрос возвращал 0 вместо строки нулей или любого другого значения, вы можете превратить это в оператор case следующим образом:
select CASE WHEN ColumnName = substring(ColumnName, patindex('%[^0]%',ColumnName), 10) THEN '0' ELSE substring(ColumnName, patindex('%[^0]%',ColumnName), 10) END
вы можете попробовать это - он принимает особую осторожность только при необходимости удалите ведущие нули:
DECLARE @LeadingZeros VARCHAR(10) ='-000987000' SET @LeadingZeros = CASE WHEN PATINDEX('%-0', @LeadingZeros) = 1 THEN @LeadingZeros ELSE CAST(CAST(@LeadingZeros AS INT) AS VARCHAR(10)) END SELECT @LeadingZeros
или вы можете просто позвонить
CAST(CAST(@LeadingZeros AS INT) AS VARCHAR(10))
чтобы удалить ведущий 0 из месяца, следующего за заявлением, безусловно, будет работать.
SELECT replace(left(Convert(nvarchar,GETDATE(),101),2),'0','')+RIGHT(Convert(nvarchar,GETDATE(),101),8)
Просто Заменить
GETDATE()
С полем даты вашей таблицы.