Приведение типов данных. Явное и неявное приведение типов данных. Функции CASTи CONVERT. Совместимость типов данных. Функции COALESCE, CASE, ISNULL. Примеры
При объединении одним оператором двух выражений с разными типами данных, параметрами сортировки, точностями, масштабами или длинами, результат определяется следующим образом.
· Тип данных результата определяется применением правил очередности типов данных к входным выражениям. Дополнительные сведения см. в разделе
· Параметры сортировки результата определяются правилами очередности параметров сортировки, если тип данных результата относится к char, varchar, text, nchar, nvarchar или ntext. Дополнительные сведения см. в разделе ;
· Точность, масштаб и длина результата зависят от точности, масштаба и длины входных выражений.
Очередность параметров сортировки, также называемая правилами приведения параметров сортировки, определяет следующее.
· Параметры сортировки итоговых результатов выражения, возвращающего символьную строку.
· Параметры сортировки, используемые теми операторами с учетом параметров сортировки, которые принимают в качестве параметра символьную строку, но не возвращают ее, например операторы LIKE и IN.
Приводимые по умолчанию: Любая переменная типа символьной строки языка Transact-SQL, параметр, литерал, выходное значение каталога встроенной функции или встроенная функция несимвольного аргумента, выходом которой является строка.
Если объект объявлен внутри пользовательской функции, хранимой процедуры или триггера, то ему присваиваются параметры сортировки по умолчанию, принятые для базы данных, в которой указанная функция, хранимая процедура или триггер были созданы. Если объект объявлен внутри пакета, то ему присваиваются параметры сортировки по умолчанию, принятые для текущей базы данных для этого соединения.
Неявные: Ссылка на столбец. Параметры сортировки для выражения (X) принимаются как параметры сортировки, определенные для столбцов таблицы или представления.
Даже в том случае, когда параметры сортировки для столбца были явно заданы с помощью предложения COLLATE в инструкции CREATE TABLE или CREATE VIEW, ссылка на столбец рассматривается как неявная.
Явные: Выражение, которое явно приводится к указанным параметрам сортировки (X) с помощью предложения COLLATE в выражении.
Без параметров сортировки: Показывает, что значением выражения являются результаты операции над двумя строками с несовместимыми параметрами сортировки неявных меток параметров сортировки. Результат выражения определяется как не имеющий параметров сортировки.
Меткой параметров сортировки простого выражения, ссылающегося на объект только одной символьной строки, является метка параметров сортировки этого объекта.
Меткой параметров сортировки сложного выражения, ссылающегося на выражения с двумя операндами с одинаковой меткой параметров сортировки, является метка этих выражений операндов.
Метка параметров сортировки для результата выполнения сложного выражения, ссылающегося на выражения с двумя операндами с разными метками параметров сортировки, основана на следующих правилах.
1Явно указанные имеют приоритет над указанными неявно. Неявно указанные имеют приоритет над приводимыми по умолчанию: 2Явные > Неявные > Приводимые по умолчанию
Объединение двух выражений, имеющих разные явно указанные параметры сортировки, приведет к ошибке: 3Явные X + Явные Y = Ошибка 4Объединение двух выражений, имеющих разные неявно указанные параметры сортировки, приведет к результату без параметров сортировки: 5Неявные X + Неявные Y = без параметров сортировки 6Объединение выражения без параметров сортировки и выражения с любой меткой, кроме метки явно указанных параметров сортировки (см. следующее правило), приведет к результату с меткой без параметров сортировки: 7Без параметров сортировки + любое = без параметров сортировки 8Объединение выражения без параметров сортировки и выражения с меткой явно указанных параметров сортировки приведет к результату с меткой явно указанных параметров сортировки: 9Без параметров сортировки + Явные X = Явные