2010-06-28 4 views
4

je remarquai que je peux écrireEst-ce que varchar (max) = varchar?

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

comme

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

Est-ce que je regrette de quitter le paramètre (Max)?

+0

En général, vous ne devriez pas utiliser varchar (max). Il devrait être utilisé rarement et seulement si vous attendez plus que les 8000 caractères qu'un varchar régulier peut contenir. Définissez varchars avec le nombre de caractères que vous pensez qu'ils devraient contenir. – HLGEM

Répondre

2

Quand est pas spécifié la longueur d'un varchar dans une déclaration de déclaration définition de données ou variable, la longueur par défaut est 1. Lorsqu'il est pas spécifié lors de l'utilisation du CAST et CONVERT fonctions, la longueur par défaut est 30.

Voir : char and varchar (Transact-SQL)

Je pense que c'est une mauvaise pratique de coder sans spécifier une longueur pour varchar.

3

VARCHAR (MAX) doit être utilisé pour les grandes Objects.It utilise le datapages normales jusqu'à ce que le contenu remplisse réellement 8k de données. Lorsque le dépassement se produit, les données sont stockées en tant que TEXT, IMAGE et un pointeur remplace l'ancien contenu. Varchar est pour les données de caractères de longueur variable et non-Unicode. n peut être une valeur comprise entre 1 et 8 000. Max indique que la taille de stockage maximale est de 2^31-1 octets. J'espère que ça aide.

+0

Oui et varchar (Max) ne devrait jamais être utilisé pour les champs qui s'attendent à des données plus petites car il a des problèmes d'indexation. – HLGEM