Типы данных mysql. чем руководствоваться при выборе типа данных

Типы данных MySQL

В MySQL есть три основных типа данных: текст, число и дата.

Текстовые типы данных:

Тип данных Описание
CHAR(size) Содержит строку фиксированной длины (может содержать буквы, цифры и специальные символы). Фиксированный размер указывается в скобках. Может хранить до 255 символов
VARCHAR(size) Содержит строку переменной длины (может содержать буквы, цифры и специальные символы). Максимальный размер указывается в скобках. Может хранить до 255 символов. Примечание: Если поместить большее значение, чем 255, оно будет преобразовано в текстовый тип
TINYTEXT Содержит строку с максимальной длиной 255 символов
TEXT Содержит строку с максимальной длиной 65 535 символов
BLOB Для BLOB-объектов (двоичные большие объекты). Удерживает до 65 535 байт данных
MEDIUMTEXT Содержит строку с максимальной длиной 16 777 215 символов
MEDIUMBLOB Для BLOB-объектов (двоичные большие объекты). Удерживает до 16 777 215 байт данных
LONGTEXT Содержит строку с максимальной длиной 4 294 967 295 символов
LONGBLOB Для BLOB-объектов (двоичные большие объекты). Удерживает до 4 294 967 295 байт данных
ENUM(x,y,z,etc.) Позволяет ввести список возможных значений. В списке Enum можно вывести до 65535 значений. Если вставленное значение отсутствует в списке, будет вставлено пустое значение.

Примечание: Значения сортируются в порядке их ввода.

Вы вводите возможные значения в этом формате: Enum (‘ X ‘, ‘ Y ‘, ‘ Z ‘)

SET Аналогично Enum, за исключением того, что набор может содержать до 64 элементов списка и может хранить более одного выбора

Типы данных чисел:

Тип данных Описание
TINYINT(size) -128 до 127 нормальный. 0 до 255 неподписанный *. Максимальное количество цифр может быть указано в скобках
SMALLINT(size) -32768 до 32767 нормальный. 0 до 65535 неподписанный *. Максимальное количество цифр может быть указано в скобках
MEDIUMINT(size) -8388608 до 8388607 нормальный. 0 до 16777215 неподписанный *. Максимальное количество цифр может быть указано в скобках
INT(size) -2147483648 до 2147483647 нормальный. 0 до 4294967295 неподписанный *. Максимальное количество цифр может быть указано в скобках
BIGINT(size) -9223372036854775808 до 9223372036854775807 в норме. 0 для 18446744073709551615 неподписанных *. Максимальное количество цифр может быть указано в скобках
FLOAT(size,d) Небольшое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре size. Максимальное число цифр справа от десятичной запятой указано в параметре d
DOUBLE(size,d) Большое число с плавающей запятой. Максимальное количество цифр может быть указано в параметре size. Максимальное число цифр справа от десятичной запятой указано в параметре d
DECIMAL(size,d) Значение типа Double, хранящееся в виде строки и допускающее фиксированную десятичную точку. Максимальное количество цифр может быть указано в параметре size. Максимальное число цифр справа от десятичной запятой указано в параметре d

* целочисленные типы имеют дополнительный параметр, называемый неподписанным. Как правило, целое число переходит от отрицательного к положительному значению. Добавление неподписанного атрибута будет перемещаться, что диапазон вверх, поэтому он начинается с нуля, а не отрицательное число.

Типы данных дат:

Тип данных Описание
DATE() Свидание. Формат: гггг-мм-DD

Примечание: Поддерживаемый диапазон от ‘ 1000-01-01 ‘ до ‘ 9999-12-31 ‘

DATETIME() * комбинация даты и времени. Формат: гггг-мм-DD HH: MI: SS

Примечание: Поддерживаемый диапазон от ‘ 1000-01-01 00:00:00 ‘ до ‘ 9999-12-31 23:59:59 ‘

TIMESTAMP() * Временная метка. Значения timestamp хранятся в виде количества секунд со времени Unix (‘ 1970-01-01 00:00:00 ‘ UTC). Формат: гггг-мм-DD HH: MI: SS

Примечание: Поддерживаемый диапазон от ‘ 1970-01-01 00:00:01 ‘ UTC до ‘ 2038-01-09 03:14:07 ‘ UTC

TIME() Время. Формат: HH: MI: SS

Примечание: Поддерживаемый диапазон от ‘-838:59:59 ‘ до ‘ 838:59:59 ‘

YEAR() Год в формате с двумя или четырьмя цифрами.

Примечание: Допустимые значения в формате четырех цифр: 1901 до 2155. Допустимые значения в формате с двумя цифрами: 70 до 69, представляющие годы с 1970 по 2069

* даже если DateTime и timestamp возвращаются в том же формате, они работают очень по-разному. В запросе INSERT или Update временная метка автоматически устанавливает текущую дату и время. TIMESTAMP также принимает различные форматы, такие как ииииммддххмисс, ииммддххмисс, ГГГГММДД или YYMMDD.

Типы данных SQL Server

Типы строковых данных:

Тип данных Описание Максимальный размер Хранения
char(n) Фиксированная ширина символьной строки 8,000 Символов Определенная ширина
varchar(n) Переменная ширина символьная строка 8,000 Символов 2 байта + количество символов
varchar(max) Переменная ширина символьная строка 1,073,741,824 Символов 2 байта + количество символов
text Переменная ширина символьная строка 2GB of text data 4 байта + количество символов
nchar Фиксированная ширина строки Юникода 4,000 Символов Определенная ширина x 2
nvarchar Переменная ширина Юникод строка 4,000 Символов  
nvarchar(max) Переменная ширина Юникод строка 536,870,912 Символов  
ntext Переменная ширина Юникод строка 2GB of text data  
binary(n) Фиксированная ширина двоичной строки 8,000 bytes  
varbinary Переменная ширина двоичная строка 8,000 bytes  
varbinary(max) Переменная ширина двоичная строка 2GB  
image Переменная ширина двоичная строка 2GB  

Типы данных чисел:

Тип данных Описание Хранения
bit Целое число, которое может быть 0, 1 или null  
tinyint Позволяет целые числа от 0 до 255 1 byte
smallint Позволяет целые числа между -32 768 и 32 767 2 bytes
int Позволяет целые числа между -2 147 483 648 и 2 147 483 647 4 bytes
bigint Позволяет целые числа между -9223372036854775808 и 9 223 372 036 854 775 807 8 bytes
decimal(p,s) Fixed precision and scale numbers.

Разрешает числа от-10 ^ 38 + 1 до 10 ^ 38 – 1.

Параметр p указывает максимальное общее количество цифр, которые могут быть сохранены (как слева, так и справа от десятичной запятой). p должно быть значением от 1 до 38. Значение по умолчанию — 18.

Параметр s указывает максимальное число цифр, хранящихся справа от десятичной запятой. s должно быть значением от 0 до p. значение по умолчанию 0

5-17 bytes
numeric(p,s) Фиксированные значения точности и масштаба.

Разрешает числа от-10 ^ 38 + 1 до 10 ^ 38 – 1.

Параметр p указывает максимальное общее количество цифр, которые могут быть сохранены (как слева, так и справа от десятичной запятой). p должно быть значением от 1 до 38. Значение по умолчанию — 18.

Параметр s указывает максимальное число цифр, хранящихся справа от десятичной запятой. s должно быть значением от 0 до p. значение по умолчанию 0

5-17 bytes
smallmoney Денежные данные от-214 748,3648 до 214 748,3647 4 bytes
money Денежные данные от-922 337 203 685 477,5808 до 922 337 203 685 477,5807 8 bytes
float(n) Плавающая точность данных чисел от-1.79 e + 308 до 1.79 e + 308.

Параметр n указывает, должно ли поле содержать 4 или 8 байт. float (24) содержит 4-байтное поле и float (53) содержит 8-байтное поле. Значение по умолчанию n — 53.

4 or 8 bytes
real Плавающие данные о точности чисел от-38 e + 4 bytes

Типы данных дат:

Тип данных Описание Хранения
datetime С 1 января 1753 по 31 декабря 9999 с точностью 3,33 миллисекунд 8 bytes
datetime2 С 1 января 0001 по 31 декабря 9999 с точностью 100. 6-8 bytes
smalldatetime С 1 января 1900 по 6 июня 2079 с точностью до 1 минуты 4 bytes
date Хранить только дату. С 1 января 0001 по 31 декабря 9999 3 bytes
time Хранить время только для точности 100-ти секунд 3-5 bytes
datetimeoffset Так же, как datetime2 с добавлением смещения часового пояса 8-10 bytes
timestamp Хранит уникальный номер, который обновляется каждый раз при создании или изменении строки. Значение timestamp основывается на внутренних часах и не соответствует реальному времени. Каждая таблица может иметь только одну переменную timestamp  

Другие типы данных:

Тип данных Описание
sql_variant Хранит до 8 000 байт данных различных типов данных, за исключением текста, ntext и отметки времени
uniqueidentifier Хранит глобальный уникальный идентификатор (GUID)
xml Хранит XML-форматированные данные. Максимум 2 ГБ
cursor Хранит ссылку на курсор, используемый для операций с базой данных
table Хранит результирующий набор для последующей обработки

Числовые типы

Хранение целых чисел

  • TINYINT(N) (синоним INTEGER, BOOL, BOOLEAN) — 8 бит;
  • SMALLINT(N) — 16 бит;
  • MEDIUMINT(N) — 24 бита;
  • INT(N) — 32 бита;
  • BIGINT(N) — 64 бита.

СУБД MySQL позволяет указывать для целых чисел «размер», например INT(11). Для большинства приложений это не имеет значения: диапазон возможных значений этим не ограничивается. Однако данный параметр говорит некоторым интерактивным инструментам MySQL, сколько позиций необходимо зарезервировать для вывода числа. С точки зрения хранения и вычисления INT(1) и INT(20) идентичны.

Целочисленный тип данных длиной N бит позволяет хранить значения от -2(N-1) до 2(N-1)-1.

Целые типы данных могут иметь необязательный атрибут UNSIGNED, запрещающий отрицательные значения и приблизительно вдвое увеличивающий верхний предел положительных значений. Например, тип TINYINT UNSIGNED позволяет хранить значения от 0 до 255, а не от -128 до 127.

Знаковые и беззнаковые типы требуют одинакового пространства и обладают одинаковой производительностью.

Необязательный атрибут ZEROFILL заполнит нулями свободные позиции слева. Например с TINYINT(3) ZEROFILL, величина 2 будет записана, как 002.

Тип данных Бит По умолчанию UNSIGNED
TINYINT 8 -128 — 127 0 — 255
SMALLINT 16 -32768 — 32767 0 — 65535
MEDIUMINT  24 -8388608 — 8388607 0 — 16777215
INT  32 -2147483648 — 2147483647 0 — 4294967295
BIGINT  64 -9223372036854775808 — 9223372036854775807 0 — 18446744073709551615

Хранение дробных чисел

Все типы допускают приближенные математические вычисления с плавающей точкой, но в случае с FLOAT и DOUBLE операции выполняются быстрее, так как процессор выполняет их естественным для него образом.

  • FLOAT(M,D) — число с плавающей точкой небольшой точности, задействует 4 байта. 
  • DOUBLE(M,D) (синонимы REAL, DOUBLE PRECISION) — число с плавающей точкой двойной точности. Задействует 8 байт, имеет большую точность и больший диапазон значений. 
  • DECIMAL(M,D) (синонимы DEC, NUMERIC, FIXED) — дробное число, хранящееся в виде строки, если десятичное значение равно 0, значение не будет иметь десятичной запятой или дробной части. Предназначен для хранения точных дробных чисел (можно хранить большие целые числа, не помещающиеся в типе BIGINT). Имеет смысл использовать только тогда, когда нужны точные результаты при вычислениях с дробными числами, — например, при хранении финансовых данных. Задействует больше пространства. 

M — количество отводимых под число символов. D — количество символов дробной части. 

Для типов с плавающей точкой можно указать максимально разрешенное количество цифр до и после десятичной запятой. В случае с DECIMAL это влияет на объем пространства, требуемого для хранения данных столбца. При указании точности, в некоторых случаях, MySQL незаметно для пользователя может выбирать другой тип данных или будет округлять значения при сохранении. Поэтому рекомендуют указывать желаемый тип, но не точность.

FLOAT и DOUBLE могут иметь параметр UNSIGNED, запрещающий отрицательные числа, но диапазон значений от этого не изменится. 

Число типа DECIMAL в MySQL 5.0 и более новых версиях может содержать до 65 цифр. В более ранних версиях MySQL тип DECIMAL имел предел 254 цифры и хранил значения в виде неупакованных строк (один байт на цифру). Однако эти версии СУБД не умели использовать такие большие числа в вычислениях, поскольку тип DECIMAL был просто форматом хранения. При выполнении каких-либо операций значения DECIMAL преобразовывались в тип DOUBLE.

Remarks

Часто ошибочно считают, что в типах данных CHAR(n) и VARCHAR(n) число n указывает на количество символов. Однако на самом деле число n в CHAR(n) и VARCHAR(n) — это длина строки в байтах (0–8000). n никогда не определяет количество хранимых символов. То же самое верно и в отношении типов NCHAR(n) и NVARCHAR(n).
Причина этого заблуждения в том, что при использовании однобайтовых кодировок размер данных типов CHAR и VARCHAR при хранении равен n байт, а количество символов — тоже n. Однако в случае с многобайтовыми кодировками, такими как UTF-8, в старших диапазонах Юникода (128–1 114 111) один символ занимает два или несколько байтов. Например, в столбце, определенном как CHAR(10), Компонент Database Engine может хранить 10 символов, использующих однобайтовую кодировку (диапазон Юникода 0–127), но меньше 10 символов при использовании многобайтовой кодировки (диапазон Юникода 128–1 114 111). Дополнительные сведения о хранении символов Юникода и их диапазонах см. в разделе .

Если значение n в определении данных или инструкции объявления переменной не указано, длина по умолчанию равна 1. Если значение n не указано при использовании функций CAST и CONVERT, длина по умолчанию равна 30.

Объектам, в которых используются типы данных char и varchar, назначаются параметры сортировки базы данных по умолчанию, если только иные параметры сортировки не назначены с использованием предложения COLLATE. Параметры сортировки контролируют кодовую страницу, используемую для хранения символьных данных.

В SQL Server многобайтовые кодировки включают:

  • двухбайтовые кодировки (DBCS) для некоторых языков Восточной Азии, использующих кодовые страницы 936 и 950 (китайский), 932 (японский) или 949 (корейский).
  • UTF-8 с кодовой страницей 65001. Применимо к: SQL Server (начиная с SQL Server 2019 (15.x))

Если у вас есть сайты, поддерживающие несколько языков, примите к сведению следующие рекомендации:

  • Для поддержки Юникода и минимизации проблем с преобразованием символов рекомендуем использовать параметры сортировки с поддержкой UTF-8 (начиная с SQL Server 2019 (15.x)).
  • Если используется более ранняя версия Компонент SQL Server Database Engine, то чтобы избежать проблем с преобразованием символов, рекомендуем использовать типы данных Юникода nchar или nvarchar.

Если вы используете char или varchar, мы рекомендуем:

  • Если размеры записей данных столбцов постоянны, используйте char.
  • Если размеры записей данных столбцов значительно изменяются, используйте varchar.
  • использовать varchar(max) , если размеры записей данных в столбцах существенно отличаются и длина строки может превышать 8000 байт.

Если SET ANSI_PADDING равно OFF при выполнении CREATE TABLE или ALTER TABLE, столбец char, определенный как NULL, обрабатывается как varchar.

Предупреждение

Для каждого ненулевого столбца varchar(max) или nvarchar(max) требуется 24 байта дополнительного фиксированного выделения, которые учитываются в максимальном размере строки в 8060 байт во время операции сортировки. Это может создать неявное ограничение в ряде ненулевых столбцов varchar(max) или nvarchar(max), которые могут быть созданы в таблице.
При создании таблицы или во время вставки данных не возникает особых ошибок (кроме обычного предупреждения о том, что максимальный размер строки превышает максимально допустимое значение в 8060 байт). Такой размер строки может вызывать ошибки (например, ошибку 512) во время некоторых обычных операций, таких как обновление ключа кластеризованного индекса, или сортировки полного набора столбцов, которая происходит только во время выполнения операции.

TL;DR версия

  • Удалите ненужные колонки из схемы.
  • Сократите длину колонок до минимума.
  • Избегайте использования NULL значений.
  • Выберите минимально необходимые числовые типы (TINYINT / SMALLINT вместо INT).
  • Используйте FLOAT / DOUBLE вместо DECIMAL для приблизительных чисел.
  • Выберите CHAR для строк приблизительно одинаковой длины.
  • Для остальных строк — выберите VARCHAR.
  • Не используйте TEXT / BLOB для сортировки и индексирования.
  • Используйте ENUM вместо строк из фиксированного набора (например, списка стран).
  • Используйте TIMESTAMP для простановки времени событий (регистрация, отправка сообщения и т.п.).
  • Для остальных дат используйте DATETIME.
  • Прочитайте об устройстве индексов и тюнинге настроек в Mysql.

BLOB / TEXT

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

Mysql не умеет выполнять сортировку по этим значениям, поэтому использует только первые max_sort_length символов. Точно также, при создании индекса по этой колонке необходимо указать длину:

Указываем длину колонки для индексации

Тяжело представить зачем нужно индексировать текстовые колонки, просто не делайте этого. Если же захотите использовать возможность создания индекса для проверки уникальности, используйте вспомогательную колонку для хранения md5 хэша от текста:

CREATE TABLE `articles` (
body TEXT NOT NULL DEFAULT '',
body_md5 CHAR(32)
);

По колонке body_md5 можно создать уникальный индекс

Пример. Вычисление размера строки и таблицы

Для хэш-индекса фактическое число контейнеров округляется в сторону увеличения до ближайшей степени числа 2. Например, если заданное число равно 100 000, то фактическое число контейнеров для индекса составляет 131 072.

Рассмотрим таблицу Orders со следующим определением:

Обратите внимание, что эта таблица содержит один хэш-индекс и некластеризованный индекс (первичный ключ). Кроме того, она содержит три столбца фиксированной длины и один столбец переменной длины, при этом один из столбцов допускает значения NULL ()

Допустим, таблица содержит 8379 строк, а средняя длина значений в столбце составляет 78 символов.

Чтобы определить размер таблицы, сначала необходимо определить размер индексов. Для обоих индексов указан показатель bucket_count, равный 10 000. Эта величина округляется в большую сторону до ближайшей степени числа 2: 16384. Поэтому общий размер индексов для таблицы Orders составляет:

Остается найти размер данных таблицы, который равен

(Пример таблицы содержит 8379 строк.) Теперь у нас есть:

Теперь давайте рассчитаем .

  • Столбцы поверхностных типов:

  • Заполнение для столбцов поверхностных типов равно 0, поскольку общий размер столбцов поверхностного типа является четным числом.

  • Массив смещений для столбцов глубоких типов:

  • Массив значений NULL = 1

  • Заполнение массива значений NULL = 1, так как размер массива значений NULL является нечетным числом, а в таблице есть столбцы глубоких типов.

  • Заполнение

    • 8 — наибольшее требования выравнивания.

    • Размер на данный момент равен 16 + 0 + 4 + 1 + 1 = 22.

    • Ближайшее число, кратное 8, — это 24.

    • В итоге заполнение составляет 24 – 22 = 2 байта.

  • В таблице нет столбцов глубоких типов фиксированной длины (столбцов глубоких типов фиксированной длины: 0).

  • Фактический размер столбца глубокого типа составляет 2 * 78 = 156. Единственный столбец глубокого типа имеет тип .

Для завершения вычисления:

Таким образом, общий размер, занимаемый таблицей в памяти, составляет около 2 мегабайт. Это значение не учитывает потенциальные издержки при выделении памяти, а также управление версиями строк, необходимое для доступа транзакций к этой таблице.

Фактический размер памяти, выделяемый для данной таблицы и используемый ею и ее индексами, можно получить при помощи следующего запроса:

DATETIME / TIMESTAMP

Оба формата дат позволяют хранить значения даты и времени вплоть до секунд. Однако между ними есть отличия:

  • DATETIME занимает 8 байт и позволяет хранить даты с 1001 года до 9999 года.
  • TIMESTAMP занимает 4 байта и позволяет хранить даты с 1970 года до 2038 года.

Используйте формат TIMESTAMP для простановки дат событий (для чего он и создан). Например, время регистрации пользователя или публикации комментария. К тому же, он имеет удобный механизм инициализации и обновления:

CREATE TABLE users (
...
sign_up_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
last_visit_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
...
);

Инициализация и автообновление колонок TIMESTAMP

В остальных случаях используйте DATETIME.

Общие настройки

max_connections=64 — устанавливаем параметр минимальным возможным при необходимости экономить ресурсы сервера, при возникновении в логе записей вида «Too many connections…» увеличиваем значение. Не следует изменять значение этого параметра на старте. 4000 клиентов является максимумом. Можно довести максимальное количество клиентов до 7000, но для стандартных сборок 4000 является пределом.

open_files_limit = 2048 Устанавливать значение стоит опираясь на существующее количество открытых файлов MySQL:

В конфигурационном файле задается большее значение.

connect_timeout (MySQL pre-5.1.23: default 5, MySQL 5.1.23+: default 10) — количество секунд по прошествии которых сервер баз данных будет выдавать ошибку, при активном веб-сервере значение можно уменьшать чтобы увеличить скорость работы, на медленной машине — можно увеличивать. max_connect_errors (default 10) — максимальное количество единовременных соединений с сервером баз данных с хоста запрос блокируется если он прерывается запросами с того же хоста до момента окончания обработки запроса) блокируются навсегда, очистить можно только из командной оболочки MySQL:

В случае атаки на сервер нужно уменьшать (5) чтобы отсекать попытки соединения, при большой активности веб-сервера можно увеличивать max_allowed_packet (default 1M) — максимальный для буфера соединений и буфера результата при исполнении SQL инструкций. Каждый тред имеет свой буфер. Хорошим значением для начала будет 16М. tmp_table_size (system-specific default) — максимальный размер памяти выделяемой под хранение временных таблиц. 16М — довольно много.

Примеры готовых конфигураций для разных объёмов памяти можно посмотреть здесь.

Чтобы посомореть значения переменных можно воспользоваться SQL запросом:

или для конкретных переменных:

Чтобы проверить мониториг InnoDB, используте:

Чтобы узнать, не свопается ли память, используйте команду и смотрите строку swap:

Типы данных Microsoft Access

Тип данных Описание Хранения
Text Используется для текста или комбинаций текста и чисел. 255 символов максимум  
Memo MEMO используется для больших объемов текста. Хранит до 65 536 символов. Примечание: Поле MEMO нельзя сортировать. Тем не менее, они доступны для поиска  
Byte Позволяет целые числа от 0 до 255 1 byte
Integer Позволяет целые числа между-32 768 и 32 767 2 bytes
Long Позволяет целые числа между-2 147 483 648 и 2 147 483 647 4 bytes
Single Одинарная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков 4 bytes
Double Двойная точность с плавающей запятой. Будет обрабатывать большинство десятичных знаков 8 bytes
Currency Использовать для валюты. Вмещает до 15 цифр целых долларов, плюс 4 десятичных знака. Совет: Вы можете выбрать валюту страны для использования 8 bytes
AutoNumber Поля автонумерации автоматически дают каждой записи свой номер, обычно начиная с 1 4 bytes
Date/Time Использовать для дат и времени 8 bytes
Yes/No Логическое поле может отображаться как Yes/No, true/false или вкл/выкл. В коде используйте Константы true и false (эквивалентно-1 и 0). Примечание: Значения NULL не разрешены в полях «да/нет» 1 bit
Ole Object Может хранить изображения, аудио, видео, или другие BLOB-объекты (двоичные больших объектов) up to 1GB
Hyperlink Содержать ссылки на другие файлы, включая веб-страницы  
Lookup Wizard Позволяет ввести список опций, которые затем можно выбрать из раскрывающегося списка 4 bytes

❮ Назад
Дальше ❯

Преобразование символьных данных

При преобразовании символьного выражения в символьный тип данных другой длины значения, слишком длинные для нового типа данных, усекаются. Тип uniqueidentifier считается символьным типом, используемым при преобразовании из символьного выражения, поэтому на него распространяются правила усечения при преобразовании в символьный тип. См подраздел «Примеры» ниже.

Если символьное выражение преобразуется в символьное выражение другого типа данных или размера, например из char(5) в varchar(5) или из char(20) в char(15) , то преобразованному значению присваиваются параметры сортировки входного значения. Если несимвольное выражение преобразуется в символьный тип данных, то преобразованному значению присваиваются параметры сортировки, заданные по умолчанию в текущей базе данных. В любом случае необходимые параметры сортировки можно присвоить с помощью предложения COLLATE.

Примечание

Преобразование кодовых страниц поддерживается для типов данных char и varchar, однако поддержка типа данных text не предусмотрена. Как и в ранних версиях SQL Server, о потере данных во время преобразования кодовых страниц не сообщается.

Символьные выражения, которые преобразуются в приближенный тип данных numeric, могут содержать необязательную экспоненциальную нотацию (символ e нижнего регистра или E верхнего регистра, за которым следуют необязательный знак плюс (+) или минус (–) и число).

Символьные выражения, преобразуемые в точный тип данных numeric, должны состоять из цифр, десятичного разделителя и необязательного знака плюс (+) или минус (–). Начальные пробелы не учитываются. Разделители в виде запятой запрещены (например, десятичный разделитель в числе 123 456,00).

Кроме того, символьные выражения, преобразуемые в типы данных money или smallmoney, могут содержать необязательный десятичный разделитель и обозначение валюты. Разрешаются разделители в виде запятой, например 123 456,00 руб.

Когда пустая строка преобразовывается в тип int, ее значение становится равным . Когда пустая строка преобразовывается в дату, ее значением становится значение даты по умолчанию, то есть .

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Все про сервера
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: