0

Подскажите, мне необходимо хранить код в виде "091", в каком бы формате я не инсертил он упрямо вставляет "91", как сделать что бы 0 оставался, только varchar?

  • 1
    Да, как строку. Потому что код - это не число. Над ним не нужно производить арифметических действий, его не нужно сравнивать по правилам сравнения чисел. Зато по нему нужен текстовый поиск и конкретный формат. – iTollu Apr 03 '17 at 16:22
  • http://ru.stackoverflow.com/a/453060/178988 – Qwertiy Apr 05 '17 at 08:47

1 Answers1

1

Если вы хотите хранить некий код, то да, указывайте любой текстовый формат (char, varchar, nchar, nvarchar).

Если же вы хотите хранить число, и выводить его по определенным правилам (с впередистоящими нулями), то можете добавление предстоящих нулей реализовать на клиенте или в запросе.

Вот так, например, я делаю преобразование числа в строку для сохранения порядка сортировки:

create table testtable (id int);

insert into testtable values (1), (101), (2147483647);

select right('000000000' + cast(id as varchar), 10) from testtable

drop table testtable;
minamoto
  • 4,021
  • для таких сниппетов куда удобнее declare @test table (id int) делать, а не создавать и дропать таблицу, если версия сервера позволяет. – teran Apr 05 '17 at 10:27
  • Это чисто для примера. понятно, что смысл только в функции для возврата значения. – minamoto Apr 05 '17 at 15:51