Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Funzione LEN che non include gli spazi finali in SQL Server

Ciò è chiaramente documentato da Microsoft in MSDN all'indirizzo http://msdn.microsoft.com/en-us/library/ms190329(SQL.90).aspx, che afferma LEN "restituisce il numero di caratteri dell'espressione stringa specificata, escluso spazi vuoti finali". Tuttavia, è un dettaglio facile da perdere se non stai attento.

È invece necessario utilizzare la funzione DATALENGTH - vedere http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx - che "restituisce il numero di byte utilizzati per rappresentare qualsiasi espressione".

Esempio:

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