2009-02-17 8 views

Répondre

2

Len() va couper (supprimer les espaces de fin) des données.

La fonction DataLength() ne

Exemples: Sélectionnez Len ('Test ') - ce retournera 4

Sélectionnez DATALENGTH (' Test') - ce sera de retour 5

OUTRE (agrégés à partir des autres réponses fantastique et utiles):

DATALENGTH renvoie la longueur de la chaîne en octets, y compris les espaces de fin http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx

LEN renvoie la longueur en caractères, à l'exclusion des espaces de fin http://msdn.microsoft.com/en-us/library/ms190329.aspx

Etant donné que les chaînes peuvent se composer d'un ou de 2 octets (Unicode), les résultats de l'utilisation ou l'autre varie en fonction à la fois du type de données de la chaîne et s'il y a des espaces de fuite dans la chaîne

Par exemple,

SELECT LEN ('string'), LEN ('string'), DATALENGTH ('chaîne'), DATALENGTH ('chaîne '), LEN (N'string'), LEN (N'string '), DATALENGTH (N'string'), DATALENGTH (N'string')

Nous reviendrons 6, 6, 6, 7, 6, 6, 12, 14

+0

+1 pour la différence avec un exemple de travail et compiler d'autres réponses. – Lijo

4

DATALENGTH renvoie la longueur de la chaîne en octets, y compris les espaces de fin. LEN renvoie la longueur en caractères, à l'exclusion des espaces de fin. Par exemple,

SELECT LEN ('string'), LEN ('string '), DATALENGTH (' string'), DATALENGTH ('string '), LEN (N'string'), LEN (N'string '), DATALENGTH (N'string'), DATALENGTH (N'string «)

sera de retour 6, 6, 6, 9, 6, 6, 12, 18

+0

J'ai reçu 6, 6, 6, 7, 6, 6, 12, 14 – dplante

0

En ce qui concerne les chaînes, datalength() renvoie le nombre d'octets et len ​​() renvoie une valeur entière pour le nombre de caractères.

Questions connexes