Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Fonction LEN n'incluant pas les espaces de fin dans SQL Server

Ceci est clairement documenté par Microsoft dans MSDN à http://msdn.microsoft.com/en-us/library/ms190329(SQL.90).aspx, qui indique LEN "renvoie le nombre de caractères de l'expression de chaîne spécifiée, à l'exclusion blancs à la fin". C'est cependant un détail facile à manquer si vous ne vous méfiez pas.

Vous devez plutôt utiliser la fonction DATALENGTH - voir http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx - qui "renvoie le nombre d'octets utilisés pour représenter n'importe quelle expression".

Exemple :

SELECT 
    ID, 
    TestField, 
    LEN(TestField) As LenOfTestField,           -- Does not include trailing spaces
    DATALENGTH(TestField) As DataLengthOfTestField      -- Shows the true length of data, including trailing spaces.
FROM 
    TestTable