Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Какой тип выбрать?  [new]
newman123
Member

Откуда:
Сообщений: 47
Опять же мб ламерский вопрос: в таблицу нужно добавить столбец, в него будут заливаться числа с одинаковой длиной - 10 цифр. Какой тип данных лучше выбрать: int или varchar(10) ?
20 июл 09, 18:20    [7437281]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36805
Хранить числа в строковом типе данных - имхо, изначально неудачная идея.
20 июл 09, 18:21    [7437291]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
может ли первая цифра быть нулем?
20 июл 09, 18:22    [7437292]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
iljy
Member

Откуда:
Сообщений: 8711
newman123,
если числа - то однозначно не varchar. можете подумать над использованием numeric или bigint, int в общем случае не хватит (он только до 2*10^9).
20 июл 09, 18:23    [7437297]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
newman123
Member

Откуда:
Сообщений: 47
Первая цифра теоретически может быть ноль. Блин да, обсчитался int не подойдет.
Тогда почему varchar(10) не подойдет?
20 июл 09, 18:26    [7437311]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
newman123
Первая цифра теоретически может быть ноль.
И этот ноль нельзя потерять?
20 июл 09, 18:28    [7437314]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
newman123
Member

Откуда:
Сообщений: 47
да, ноль ни в коем случае нельзя терять
20 июл 09, 18:29    [7437316]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22552
мне лично кроме char(10) ничего в голову не приходит
20 июл 09, 18:29    [7437321]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
newman123
Member

Откуда:
Сообщений: 47
Могу также добавить, не знаю насколько это важно. Это не совсем числа, это номера, в которые входят только цифры.
20 июл 09, 18:32    [7437330]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Джонни Кейдж
Member

Откуда: стольный град Киев
Сообщений: 31
Ну, раз ведущие нули нельзя терять - тогда VARCHAR(10).
20 июл 09, 18:47    [7437364]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Var79
Member

Откуда:
Сообщений: 890
Паганель прям как телепат :-)
20 июл 09, 19:36    [7437469]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
newman123
Блин да, обсчитался int не подойдет.
Шо за фигня?
int от -2^31 (-2 147 483 648) до 2^31-1 (2 147 483 647)Считаем...
Раз, два, три, ..., девять, десять! INT (БЕЗ ЗНАКА) всегда помещается в 10 десятичных цифр!
20 июл 09, 20:00    [7437512]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2iap
а лидирующие нули через 11 цифру единичку? ;)

для спящего время бодрствования равносильно сну
20 июл 09, 20:05    [7437522]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
msLex
Member

Откуда:
Сообщений: 7887
Паганель
мне лично кроме char(10) ничего в голову не приходит


Если в "числе" всегда 10 символов то, имхо, можно и bigint, так-как 1 - это всегда "0000000001".
Зависит от того что будут с этими данными делать в дальнейшем.
20 июл 09, 20:07    [7437526]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
можно хранить 2 значения. оригинальный текст и преобразованный инт. будет "и нашим и вашим"
20 июл 09, 20:23    [7437542]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2newman123
если Вам не нужны будут математические операции, то делайте char(10).

для спящего время бодрствования равносильно сну
20 июл 09, 20:39    [7437567]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
newman123
Member

Откуда:
Сообщений: 47
Спасибо за разъяснения, сделал varchar(10)
20 июл 09, 20:50    [7437583]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
newman123
Спасибо за разъяснения, сделал varchar(10)

Неправильное решение
Поле для значения должно быть типа numeric
А вычисляемое поле для отоборажения должно быть varchar(10)
20 июл 09, 20:56    [7437595]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
2Glory
потому что меньше места будет занимать?

для спящего время бодрствования равносильно сну
20 июл 09, 21:14    [7437621]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Glory
Member

Откуда:
Сообщений: 104760
Алексей2003
2Glory
потому что меньше места будет занимать?

для спящего время бодрствования равносильно сну

Потому что не надо будет мучаться с проверкой типа данных
20 июл 09, 21:20    [7437631]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
но если там будут храниться номера документов, то зачем нужны будут проверки типов данных?
там наверняка когданибудь "/" введут, чтобы выделить документ..

для спящего время бодрствования равносильно сну
20 июл 09, 21:25    [7437638]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
iljy
Member

Откуда:
Сообщений: 8711
iap
newman123
Блин да, обсчитался int не подойдет.
Шо за фигня?
int от -2^31 (-2 147 483 648) до 2^31-1 (2 147 483 647)Считаем...
Раз, два, три, ..., девять, десять! INT (БЕЗ ЗНАКА) всегда помещается в 10 десятичных цифр!


уместите пожалуйта в int число 9 999 999 999

Алексей2003

но если там будут храниться номера документов, то зачем нужны будут проверки типов данных?
там наверняка когданибудь "/" введут, чтобы выделить документ..

извините, но это уже вопрос постановки задачи. все зависит от того, что планируется хранить. если нужно число - надо хранить как число, а при необходимости добавлять нули при выводе. если произвольная строка - тогда пусть будет строка.
21 июл 09, 00:20    [7437921]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
step_ks
Member

Откуда:
Сообщений: 936
iljy

извините, но это уже вопрос постановки задачи. все зависит от того, что планируется хранить. если нужно число - надо хранить как число, а при необходимости добавлять нули при выводе.

И как планируете узнавать, сколько нулей нужно добавлять к каждому значению?
21 июл 09, 08:27    [7438200]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
iap
Member

Откуда: Москва
Сообщений: 46975
iljy
iap
newman123
Блин да, обсчитался int не подойдет.
Шо за фигня?
int от -2^31 (-2 147 483 648) до 2^31-1 (2 147 483 647)Считаем...
Раз, два, три, ..., девять, десять! INT (БЕЗ ЗНАКА) всегда помещается в 10 десятичных цифр!
уместите пожалуйта в int число 9 999 999 999
Я не говорил, что любое десятизначное число можно представить типом int!
Если уж так надо, то подойдёт DEC(10)
Но, например, о целочисленном делении без конвертирования в BIGINT надо будет тогда забыть.
Так что надо знать, что с этими числами предстоит делать.
Если просто хранить и смотреть на них время от времени, то сгодится и СНАR(10).
Если они участвуют в вычислениях, то DEC(10).
Если нужны особенности поведения целых чисел, то BIGINT.
Если в двух последних случаях надо ещё и показывать чмсла с лидирующими нулями, то
сделать специально для этого вычисляемое поле:
[Поле для показа] AS REPLACE(STR([Числовое поле],10),' ','0')
21 июл 09, 08:53    [7438240]     Ответить | Цитировать Сообщить модератору
 Re: Какой тип выбрать?  [new]
iljy
Member

Откуда:
Сообщений: 8711
step_ks
iljy

извините, но это уже вопрос постановки задачи. все зависит от того, что планируется хранить. если нужно число - надо хранить как число, а при необходимости добавлять нули при выводе.

И как планируете узнавать, сколько нулей нужно добавлять к каждому значению?


newman123
в таблицу нужно добавить столбец, в него будут заливаться числа с одинаковой длиной - 10 цифр

по-моему в такой постановке это не очень сложно;)
но вообще - надо сначала понять, допустимы ли значения типа 01 и 001, и если да - это одно значение или разные?
21 июл 09, 09:23    [7438345]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить