Varchar (max) = varchar? - PullRequest
       1

Varchar (max) = varchar?

4 голосов
/ 28 июня 2010

Я заметил, что могу написать

SELECT CAST(Min(mynumber) AS VARCHAR(Max))+'mystring' AS X

в

SELECT CAST(Min(mynumber) AS VARCHAR)+'mystring' X

Буду ли я сожалеть, что пропустил (Макс) параметр?

Ответы [ 3 ]

8 голосов
/ 28 июня 2010

Вы пожалеете, что в (маловероятной) ситуации MAX(mynumber) содержит более 30 символов:

Когда n не указано при использованииФункции CAST и CONVERT, длина по умолчанию - 30.

3 голосов
/ 28 июня 2010

VARCHAR (MAX) должен использоваться для больших объектов. Он использует обычные страницы данных до тех пор, пока содержимое фактически не заполнит 8k данных.Когда происходит переполнение, данные сохраняются как старый текст, изображение и указатель заменяет старый контент.Varchar предназначен для переменных символов, отличных от Unicode.n может быть значением от 1 до 8000.Макс указывает, что максимальный размер хранилища составляет 2 ^ 31-1 байт.Надеюсь, это поможет.

2 голосов
/ 28 июня 2010

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

См .: char и varchar (Transact-SQL)

Мне кажется, что это плохая практика - кодировать без указания длины для varchar.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...