Если вы укажете MAKE-ARRAY
тип элемента, он попытается выделить массив с эффективным использованием пространства. Реализации имеют несколько поддерживаемых вариантов:
Примеры:
CL-USER 13 > (mapcar #'upgraded-array-element-type
'(bit fixnum character))
((UNSIGNED-BYTE 1) (SIGNED-BYTE 64) CHARACTER)
Но для многих типов нет пространственно-эффективных массивов:
CL-USER 14 > (mapcar #'upgraded-array-element-type
'(integer string standard-object))
(T T T)
Вы запросили целое число массив и получил общий массив: см. тип T
, возвращаемый upgraded-array-element-type
.
Речь идет не о проверке типов, а о том, чтобы запросить во время выполнения, возможно, получить оптимизированный для пространства массив.
Varchar, Целое число и Бит покрывают 99% моего повседневного использования.
Как правило я ничего не определил бы как поле "числа", если бы я не собирался быть выполнением арифметики на нем, даже если сами данные были числовыми.
Ваше "телефонное" поле является одним примером. Я определил бы это как varchar.
Вопрос действительно зависит от Ваших требований. Я знаю, что это не особенно удовлетворительный ответ, но это верно.
N.. типы данных char для данных Unicode, поэтому если Вы испытываете необходимость для использования unicode наборов символов в данных, необходимо использовать те типы в противоположность их "non-n" аналогам. nchar и символьный тип являются фиксированной длиной, и nvarchar и тип varchar могут иметь переменную длину, которая произведет размер столбца на диске и в памяти. Обычно я говорил бы для использования типа, который использует наименьшее количество дискового пространства, но соответствует потребностям.
Эта страница имеет ссылки на описания Microsoft этих типов данных для SQL Server 2005, многие из которых дают подсказки для того, когда использовать который тип. Вы могли бы особенно интересоваться этой страницей относительно типов varchar и символа.
N* типы данных (NVARCHAR, NCHAR, NTEXT) для строк Unicode. Они поднимают два раза пространство их "нормальные" кулоны (VARCHAR, CHAR, ТЕКСТ) потребность, но они могут сохранить Unicode без преобразования и возможной потери точности.
Типы данных text могут сохранить почти неограниченные объемы данных, но они работают не столь хороший как Типы данных char, потому что они хранятся за пределами записи.
Типы данных varchar имеют переменную длину. Они не будут дополнены пробелами в конце, но их кулоны CHAR будут (CHAR (20) является всегда двадцатью символами долго, даже если, если содержит 5 букв только. Оставление 15 будет пробелами).
Двоичные типы данных для двоичных данных, независимо от того, что Вы хотите сохранить в них (изображения являются основным примером).
Тип данных, начинающийся n, означает, что может использоваться для unicode символов..., например, nVarchar.
Выбор целых чисел также довольно забавен.
Наиболее распространенный тип данных, который я использую, является varchar....