Я заметил, что могу написать
SELECT CAST(Min(mynumber) AS VARCHAR(Max))+'mystring' AS X
в
SELECT CAST(Min(mynumber) AS VARCHAR)+'mystring' X
Буду ли я сожалеть, что пропустил (Макс) параметр?
Вы пожалеете, что в (маловероятной) ситуации MAX(mynumber) содержит более 30 символов:
MAX(mynumber)
Когда n не указано при использованииФункции CAST и CONVERT, длина по умолчанию - 30.
CAST
CONVERT
VARCHAR (MAX) должен использоваться для больших объектов. Он использует обычные страницы данных до тех пор, пока содержимое фактически не заполнит 8k данных.Когда происходит переполнение, данные сохраняются как старый текст, изображение и указатель заменяет старый контент.Varchar предназначен для переменных символов, отличных от Unicode.n может быть значением от 1 до 8000.Макс указывает, что максимальный размер хранилища составляет 2 ^ 31-1 байт.Надеюсь, это поможет.
Если длина varchar не указана в определении определения данных или оператора объявления переменной, длина по умолчанию равна 1. Если она не указана при использовании функций CAST и CONVERT, длина по умолчанию равна 30.
См .: char и varchar (Transact-SQL)
Мне кажется, что это плохая практика - кодировать без указания длины для varchar.