Я работаю над SQL-запросом, который читает из базы данных SQLServer для создания файла извлечения. Одно из требований для удаления начальных нулей из определенного поля, которое является простым VARCHAR(10)
полем. Так, например, если поле содержит «00001A», оператор SELECT должен вернуть данные как «1A».
Есть ли в SQL способ легко удалить таким образом начальные нули? Я знаю, что есть RTRIM
функция, но она, похоже, только удаляет пробелы.
sql
sql-server
tsql
Тим С
источник
источник
Ответы:
источник
источник
return
N0Z
, то есть избавится от ведущих нулей и всего, что предшествует им.источник
У меня была такая же потребность, и я использовал это:
источник
Если вы хотите, чтобы запрос возвращал 0 вместо строки нулей или любого другого значения в этом отношении, вы можете превратить это в оператор case, подобный этому:
источник
Вы можете использовать это:
источник
Вы можете попробовать это - при необходимости удаляются только ведущие нули:
Или вы можете просто позвонить
источник
Вот функция скалярного значения SQL, которая удаляет ведущие нули из строки:
источник
Если вы хотите удалить ведущие нули из строки неизвестного размера.
Вы можете рассмотреть возможность использования команды STUFF.
Вот пример того, как это будет работать.
Посмотрите в скрипачке различные сценарии, которые он охватит
https://dbfiddle.uk/?rdbms=sqlserver_2012&fiddle=14c2dca84aa28f2a7a1fac59c9412d48
источник
Чтобы удалить начальный 0 из месяца, следующий оператор определенно сработает.
Просто замените
GETDATE()
поле даты в таблице.источник
ты можешь попробовать это
SELECT REPLACE(columnname,'0','') FROM table
источник
Чтобы удалить начальный 0, вы можете умножить числовой столбец на 1, например: Select (ColumnName * 1)
источник
Это сценарий Sql, который имитирует функциональность команды TRIM в tsql до 2017 года, в основном такая же, как и другие рекомендации, но остальные заменяются одним необычным символом, который все еще может встречаться, '[Rtrim]' или '[ Ltrim] 'все еще может встречаться в тексте, но замена шляпы уникальным текстом, например Guid, решит эту проблему.
я не тестировал на скорость
источник
Я позаимствовал идеи выше. Это не быстро и не элегантно. но это точно.
КЕЙС
КОНЕЦ
источник
источник
Это должно сработать.
источник
select trim(leading '0' from '001A');
, но OP запрашивал SQL Server.