Выбор оптимальных типов данных в базе mysql

Типы данных 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 Хранит результирующий набор для последующей обработки

Numeric типы данных

Ниже перечислены числовые типы данных в MySQL:

Синтаксис Максимальный размер Пояснение
BIT Очень маленькое целочисленное значение, эквивалентное TINYINT (1). Подписанные значения варьируются от -128 до 127. Беззнаковые значения варьируются от 0 до 255.
TINYINT(m) Очень маленькое целочисленное значение. Подписанные значения варьируются от -128 до 127. Беззнаковые значения варьируются от 0 до 255.
SMALLINT(m) Малое целочисленное значение. Подписанные значения варьируются от -32768 до 32767. Беззнаковые значения варьируются от 0 до 65535.
MEDIUMINT(m) Среднее целочисленное значение. Подписанные значения варьируются от -8388608 до 8388607. Беззнаковые значения варьируются от 0 до 16777215.
INT(m) Стандартное целочисленное значение. Подписанные значения варьируются от -2147483648 до 2147483647. Беззнаковые значения варьируются от 0 до 4294967295.
INTEGER(m) Стандартное целочисленное значение. Подписанные значения варьируются от -2147483648 до 2147483647. Беззнаковые значения варьируются от 0 до 4294967295. Это синоним типа данных INT.
BIGINT(m) Большое целочисленное значение. Подписанные значения варьируются от -9223372036854775808 до 9223372036854775807. Беззнаковые значения варьируются от 0 до 18446744073709551615.
DECIMAL(m,d) Число с фиксированной точкой. m по умолчанию — 10, если не указано. d по умолчанию равно 0, если не указано. Где m — всего цифр, а d — количество цифр после десятичного знака.
DEC(m,d) Число с фиксированной точкой. m по умолчанию — 10, если не указано. d по умолчанию равно 0, если не указано. Где m — всего цифр, а d — количество цифр после десятичного знака. Это синоним типа DECIMAL.
NUMERIC(m,d) Число с фиксированной точкой. m по умолчанию — 10, если не указано. d по умолчанию равно 0, если не указано. Где m — всего цифр, а d — количество цифр после десятичного знака. Это синоним типа DECIMAL.
FIXED(m,d) Число с фиксированной точкой. m по умолчанию — 10, если не указано. d по умолчанию равно 0, если не указано. Где m — всего цифр, а d — количество цифр после десятичного знака. (Представлено в MySQL 4.1) Это синоним типа DECIMAL.
FLOAT(m,d) Число с плавающей точкой с одиночной точностью. Где m — всего цифр, а d — количество цифр после десятичного знака.
DOUBLE(m,d) Число с плавающей точкой с двойной точностью. Где m — всего цифр, а d — количество цифр после десятичного знака. Это синоним типа данных DOUBLE.
DOUBLE PRECISION(m,d) Число с плавающей точкой с двойной точностью. Где m — всего цифр, а d — количество цифр после десятичного знака.
REAL(m,d) Число с плавающей точкой с двойной точностью. Где m — всего цифр, а d — количество цифр после десятичного знака. Это синоним типа данных DOUBLE.
FLOAT(p) Число с плавающей точкой. Где p — точность.
BOOL Синонимы TINYINT (1) Рассматривается как тип данных типа boolean, где значение 0 считается FALSE, а любое другое значение считается TRUE.
BOOLEAN Синонимы TINYINT (1) Рассматривается как тип данных типа boolean, где значение 0 считается FALSE, а любое другое значение считается TRUE.

ENUM

Значения строк может быть одним из заранее известных значений (например, список стран). Если список фиксирован (новые страны не появляются каждый день), удобно будет использовать тип ENUM. Он позволяет задать определенный список значений и использовать только их в строках таблицы.

Преимущество этого типа в том, что он записывает номер значения вместо самого значения в каждую строку. Этим обеспечивается огромная экономия места.

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

Временные типы

  • DATE — предназначен для хранения даты. Формат: год «YYYY», разделитель, месяц «ММ», разделитель, день «DD». В качестве разделителя может выступать не только дефис «-», но и любой символ отличный от цифры.
  • DATETIME — предназначен для хранения и даты и времени суток. Позволяет хранить значения в большом диапазоне, с 1001 до 9999 года, с точностью в одну секунду. Дата и время упаковываются в целое число в формате YYYYMMDDHHMMSS независимо от часового пояса. Под значение отводится восемь байт. По умолчанию MySQL показывает данные типа DATETIME в точно определенном, допускающем сортировку формате: 2008-01-16 22:37:08. Этот способ представления даты и времени согласуется со стандартом ANSI.
  • TIME — предназначен для хранения времени суток. Значение вводится и хранится в привычном формате: hh:mm:ss, где hh — часы, mm — минуты, ss — секунды. В качестве разделителя может выступать любой символ отличный от цифры.
  • TIMESTAMP — предназначен для хранения даты и времени суток в виде количества секунд, прошедших с полуночи 1 января 1970 года по гринвичскому времени (начало эпохи UNIX). С точки зрения занимаемого места на диске он гораздо эффективнее, чем DATETIME. Для хранения типа TIMESTAMP используется только четыре байта, поэтому он позволяет представить значительно меньший диапазон дат, чем тип DATETIME: с 1970 года до некоторой даты в 2038 году. В MySQL имеют ся функции FROM_UNIXTIME() и UNIX_TIMESTAMP(), служащие для преобразования временной метки UNIX в дату и наоборот. Столбцы типа TIMESTAMP по умолчанию создаются в режиме NOT NULL, если вы не указали значение для столбца, MySQL вставляет в первый столбец типа TIMESTAMP текущее время. Тип TIMESTAMP имеет также специальные свойства, которых нет у типа DATETIME.
  • YEAR(N) — предназначен для хранения года. Число N задает формат года: YEAR (2) — 70, а YEAR (4) — 1970. По умолчанию, N = 4.
Типы данных Формат
DATETIME ‘0000-00-00 00:00:00’
DATE ‘0000-00-00’
TIMESTAMP 00000000000000 (длина зависит от количества выводимых символов)
TIME ‘00:00:00’
YEAR 0000

ПримерыExamples

В.C. Преобразование данных для отображенияConverting Data for Display Purposes

В следующем примере два столбца преобразуются в символьные типы, после чего к ним применяется стиль, применяющий к отображаемым данным конкретный формат.The following example converts two columns to character types and applies a style that applies a specific format to the displayed data. Тип money преобразуется в символьные данные. К нему применяется стиль 1, отображающий значения с запятыми между каждой группой из трех цифр, отсчитывая влево от десятичной точи, и каждой группой из двух цифр, отсчитывая вправо от десятичной точки.A money type is converted to character data and style 1 is applied, which displays the values with commas every three digits to the left of the decimal point, and two digits to the right of the decimal point. Тип datetime преобразуется в символьные данные. К нему применяется стиль 3, отображающий данные в формате дд/мм/гг.A datetime type is converted to character data and style 3 is applied, which displays the data in the format dd/mm/yy. В предложении WHERE тип money приводится к символьному типу для выполнения операции сравнения строк.In the WHERE clause, a money type is cast to a character type to perform a string comparison operation.

Результирующий набор:Here is the result set.

Г.D. Преобразование данных uniqueidentifierConverting Uniqueidentifer Data

В следующем примере значение преобразуется в тип данных .The following example converts a value to a data type.

Следующий пример показывает усечение данных, когда значение является слишком длинным для преобразования в заданный тип данных.The following example demonstrates the truncation of data when the value is too long for the data type being converted to. Так как тип данных uniqueidentifier ограничен 36 символами, все символы, выходящие за пределы этой длины, будут усечены.Because the uniqueidentifier type is limited to 36 characters, the characters that exceed that length are truncated.

Результирующий набор:Here is the result set.

Как оптимизатор запросов использует индексыHow Indexes are used by the Query Optimizer

Правильно построенные индексы могут сократить количество дисковых операций ввода-вывода, уменьшить потребление системных ресурсов, таким образом улучшая производительность запроса.Well-designed indexes can reduce disk I/O operations and consume fewer system resources therefore improving query performance. Индексы могут быть полезны во множестве запросов, содержащих инструкции SELECT, UPDATE, DELETE или MERGE.Indexes can be helpful for a variety of queries that contain SELECT, UPDATE, DELETE, or MERGE statements. Рассмотрим запрос в базе данных AdventureWorks2012AdventureWorks2012 .Consider the query in the AdventureWorks2012AdventureWorks2012 database. При выполнении этого запроса оптимизатор запросов оценивает все доступные методы получения данных и выбирает наиболее эффективный метод.When this query is executed, the query optimizer evaluates each available method for retrieving the data and selects the most efficient method. Этим методом может являться просмотр таблицы или просмотр одного или более индексов, если они существуют.The method may be a table scan, or may be scanning one or more indexes if they exist.

При выполнении просмотра таблицы оптимизатор запросов считывает все строки таблицы и извлекает строки, удовлетворяющие критериям запроса.When performing a table scan, the query optimizer reads all the rows in the table, and extracts the rows that meet the criteria of the query. Просмотр таблицы формирует много дисковых операций ввода-вывода и может быть ресурсоемкой операцией.A table scan generates many disk I/O operations and can be resource intensive. Но если результирующий набор запроса содержит высокий процент строк таблицы, то просмотр таблицы может оказаться самым эффективным методом.However, a table scan could be the most efficient method if, for example, the result set of the query is a high percentage of rows from the table.

Когда оптимизатор запросов использует индекс, он выполняет поиск по ключевым столбцам индекса, находит место хранения запрашиваемых строк и извлекает оттуда совпадающие строки.When the query optimizer uses an index, it searches the index key columns, finds the storage location of the rows needed by the query and extracts the matching rows from that location. В основном поиск по индексу протекает намного быстрее, чем поиск по таблице, так как в отличие от таблицы индекс часто содержит мало столбцов в каждой строке и строки расположены в отсортированном порядке.Generally, searching the index is much faster than searching the table because unlike a table, an index frequently contains very few columns per row and the rows are in sorted order.

Оптимизатор запросов обычно выбирает наиболее эффективный метод при выполнении запросов.The query optimizer typically selects the most efficient method when executing queries. Но если отсутствуют доступные индексы, оптимизатор запросов должен использовать просмотр таблицы.However, if no indexes are available, the query optimizer must use a table scan. Ваша задача — спроектировать и создать индексы, которые лучше всего подходят для конкретной среды, чтобы оптимизатор запросов мог выбирать из нескольких эффективных индексов.Your task is to design and create indexes that are best suited to your environment so that the query optimizer has a selection of efficient indexes from which to select. SQL ServerSQL Server включает помощник по настройке ядра СУБД , который может помочь при анализе среды базы данных и при выборе соответствующих индексов.provides the Database Engine Tuning Advisor to help with the analysis of your database environment and in the selection of appropriate indexes.

Важно!

Дополнительные сведения о правилах и принципах проектирования индексов см. в статье Руководство по проектированию индексов SQL Server.For more information about index design guidelines and internals, refer to the SQL Server Index Design Guide.

Типы данных 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.

Потеря соединения с сервером MySQL

С этой ошибкой можно столкнуться по одной из следующих причин:

  • плохое сетевое соединение;
  • истекло время ожидания соединения;
  • размер BLOB  больше, чем .

В первом случае убедитесь, что у вас стабильное сетевое подключение (особенно, если подключаетесь удалённо).

Если проблема с тайм-аутом соединения (особенно при первоначальном соединении MySQL с сервером), увеличьте значение параметра .

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

Если файл конфигурации недоступен, это значение можно установить с помощью следующей команды.

SQL ServerSQL Server Служебные объектыSQL ServerSQL Server Utility Objects

В следующей таблице приведены максимальные размеры и количество для различных объектов, которые были проверены в программе SQL ServerSQL Server.The following table specifies the maximum sizes and numbers of various objects that were tested in the SQL ServerSQL Server Utility.

|
SQL ServerSQL Server Объект программыSQL ServerSQL Server Utility object|Максимальные размеры и SQL ServerSQL Server числа (32-разрядные)Maximum sizes/numbers SQL ServerSQL Server (32-bit)|Максимальный размер или количество SQL ServerSQL Server (64-разрядная версия)Maximum sizes/numbers SQL ServerSQL Server (64-bit)|
|———————————————-|——————————————————————|——————————————————————|
|Компьютеры (физические или виртуальные машины) в расчете на одну программу SQL ServerSQL ServerComputers (physical computers or virtual machines) per SQL ServerSQL Server Utility|100100|100100|
|Экземпляров SQL ServerSQL Server на компьютерInstances of SQL ServerSQL Server per computer|55|55|
|Общее число экземпляров SQL ServerSQL Server на одну служебную программу SQL ServerSQL ServerTotal number of instances of SQL ServerSQL Server per SQL ServerSQL Server Utility|200*200*|200*200*|
|Пользовательских баз данных на экземпляр SQL ServerSQL Server, включая приложения на уровне данныхUser databases per instance of SQL ServerSQL Server, including data-tier applications|5050|5050|
|Общее число пользовательских баз данных на одну служебную программу SQL ServerSQL ServerTotal number of user databases per SQL ServerSQL Server Utility|10001,000|10001,000|
|Файловых групп на одну базу данныхFile groups per database|11|11|
|Файлов данных на одну файловую группуData files per file group|11|11|
|Файлов журналов на одну базу данныхLog files per database|11|11|
|Томов на компьютерVolumes per computer|33|33|

* Максимальное число управляемых экземпляров, SQL ServerSQL Server поддерживаемых служебной программой SQL ServerSQL Server , может отличаться в зависимости от конфигурации оборудования сервера.*The maximum number of managed instances of SQL ServerSQL Server supported by SQL ServerSQL Server Utility might vary based on the hardware configuration of the server. Дополнительные сведения о начале работы см. в разделе Функции и задачи служебной программы SQL Server.For getting started information, see SQL Server Utility Features and Tasks. Точка управления служебной программой SQL ServerSQL Server доступна не во всех выпусках SQL Server 2014SQL Server 2014.SQL ServerSQL Server utility control point is not available in every edition of SQL Server 2014SQL Server 2014. Перечень функций, поддерживаемых в разных выпусках SQL ServerSQL Server, см. в разделе Features Supported by the Editions of SQL Server 2014.For a list of features that are supported by the editions of SQL ServerSQL Server, see Features Supported by the Editions of SQL Server 2014.

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

При преобразовании символьного выражения в символьный тип данных другой длины значения, слишком длинные для нового типа данных, усекаются.When character expressions are converted to a character data type of a different size, values that are too long for the new data type are truncated. Тип uniqueidentifier считается символьным типом, используемым при преобразовании из символьного выражения, поэтому на него распространяются правила усечения при преобразовании в символьный тип.The uniqueidentifier type is considered a character type for the purposes of conversion from a character expression, and so is subject to the truncation rules for converting to a character type. См подраздел «Примеры» ниже.See the Examples section that follows.

Если символьное выражение преобразуется в символьное выражение другого типа данных или размера, например из char(5) в varchar(5) или из char(20) в char(15) , то преобразованному значению присваиваются параметры сортировки входного значения.When a character expression is converted to a character expression of a different data type or size, such as from char(5) to varchar(5), or char(20) to char(15), the collation of the input value is assigned to the converted value. Если несимвольное выражение преобразуется в символьный тип данных, то преобразованному значению присваиваются параметры сортировки, заданные по умолчанию в текущей базе данных.If a noncharacter expression is converted to a character data type, the default collation of the current database is assigned to the converted value. В любом случае необходимые параметры сортировки можно присвоить с помощью предложения COLLATE.In either case, you can assign a specific collation by using the COLLATE clause.

Примечание

Преобразование кодовых страниц поддерживается для типов данных char и varchar, однако поддержка типа данных text не предусмотрена.Code page translations are supported for char and varchar data types, but not for text data type. Как и в ранних версиях SQL ServerSQL Server, о потере данных во время преобразования кодовых страниц не сообщается.As with earlier versions of SQL ServerSQL Server, data loss during code page translations isn’t reported.

Символьные выражения, которые преобразуются в приближенный тип данных numeric, могут содержать необязательную экспоненциальную нотациюCharacter expressions that are being converted to an approximate numeric data type can include optional exponential notation. (символ e нижнего регистра или E верхнего регистра, за которым следуют необязательный знак плюс (+) или минус (–) и число).This notation is a lowercase e or uppercase E followed by an optional plus (+) or minus (-) sign and then a number.

Символьные выражения, преобразуемые в точный тип данных numeric, должны состоять из цифр, десятичного разделителя и необязательного знака плюс (+) или минус (–).Character expressions that are being converted to an exact numeric data type must consist of digits, a decimal point, and an optional plus (+) or minus (-). Начальные пробелы не учитываются.Leading blanks are ignored. Разделители в виде запятой запрещены (например, десятичный разделитель в числе 123 456,00).Comma separators, such as the thousands separator in 123,456.00, aren’t allowed in the string.

Кроме того, символьные выражения, преобразуемые в типы данных money или smallmoney, могут содержать необязательный десятичный разделитель и обозначение валюты.Character expressions being converted to money or smallmoney data types can also include an optional decimal point and dollar sign ($). Разрешаются разделители в виде запятой, например 123 456,00 руб.Comma separators, as in $123,456.00, are allowed.

Когда пустая строка преобразовывается в тип int, ее значение становится равным .When an empty string get converted to an int, its value becomes . Когда пустая строка преобразовывается в дату, ее значением становится значение даты по умолчанию, то есть .When an empty string gets converted to a date, its value becomes the default value for date — which is .

Ссылка на основную публикацию