Comments 3
Добрый день.
Спасибо за информацию об узких местах неявного преобразования типов. Никогда не использовал такие длинные значения, но буду иметь ввиду.
А почему Вы используете термин "константа", а не переменая? В T-SQL вроде вообще нет такого понятия, по крайней мере, в традиционном понимании (неизменяемое значение).
Потому что именно константы, в зависимости от их длины в байтах, могут автоматически неявно превращаться их VARCHAR(n) или NVARCHAR(n) в VARCHAR(MAX) или NVARCHAR(MAX).
Например, был у нас динамический SQL запрос в юникодной строке длинней 4000 символов (8000 байт). Всё замечательно работало. Затем решили вставить в его середину какую-то переменную или параметр функции типа NVARCHAR(n). В результате эта строка распалась на две короче 4000 символов, которые тоже стали NVARCHAR(n). Результат конкатенации тоже сразу превратился из NVARCHAR(MAX) в NVARCHAR(n) и обрезался до 4000 символов. Быстро найдёте эту ошибку? Сразу поймёте как её исправить?
В T-SQL вроде вообще нет такого понятия
Это можно перевести как-то иначе?
Строковые константы в MS SQL