Подскажите, мне необходимо хранить код в виде "091", в каком бы формате я не инсертил он упрямо вставляет "91", как сделать что бы 0 оставался, только varchar?
Asked
Active
Viewed 1,329 times
0
Winteriscoming
- 2,347
-
1Да, как строку. Потому что код - это не число. Над ним не нужно производить арифметических действий, его не нужно сравнивать по правилам сравнения чисел. Зато по нему нужен текстовый поиск и конкретный формат. – iTollu Apr 03 '17 at 16:22
-
http://ru.stackoverflow.com/a/453060/178988 – Qwertiy Apr 05 '17 at 08:47
1 Answers
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