Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Função LEN não incluindo espaços à direita no SQL Server


Isso está claramente documentado pela Microsoft no MSDN em http://msdn.microsoft.com/en-us/library/ms190329(SQL.90).aspx, que afirma que LEN "retorna o número de caracteres da expressão de string especificada, excluindo espaços em branco". É, no entanto, um detalhe fácil de perder se você não for cauteloso.

Em vez disso, você precisa usar a função DATALENGTH - consulte http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx - que "retorna o número de bytes usados ​​para representar qualquer expressão".

Exemplo:
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