Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

LEN-Funktion ohne nachgestellte Leerzeichen in SQL Server

Dies ist eindeutig von Microsoft in MSDN unter http://msdn.microsoft.com/en-us/library/ms190329(SQL.90).aspx dokumentiert, wo angegeben ist, dass LEN „die Anzahl der Zeichen des angegebenen Zeichenfolgenausdrucks zurückgibt, ausschließlich nachgestellte Leerzeichen". Es ist jedoch ein leicht zu übersehendes Detail, wenn Sie nicht vorsichtig sind.

Sie müssen stattdessen die Funktion DATALENGTH verwenden – siehe http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx – die „die Anzahl der Bytes zurückgibt, die zur Darstellung eines beliebigen Ausdrucks verwendet werden“.

Beispiel:

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