sql >> Databasteknik >  >> RDS >> Sqlserver

LEN-funktionen inkluderar inte efterföljande mellanslag i SQL Server

Detta är tydligt dokumenterat av Microsoft i MSDN på http://msdn.microsoft.com/en-us/library/ms190329(SQL.90).aspx, som säger att LEN "returnerar antalet tecken i det angivna stränguttrycket, exklusive efterföljande ämnen". Det är dock en lätt detalj att missa om du inte är försiktig.

Du måste istället använda DATALENGTH-funktionen - se http://msdn.microsoft.com/en-us/library/ms173486(SQL.90).aspx - som "returnerar antalet byte som används för att representera alla uttryck".

Exempel:

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


  1. Postgres VÄLJ där WHERE är UUID eller sträng

  2. Vad är schema i SQL Server och hur man skapar/släpper schema i SQL Server-databas - SQL Server / TSQL Tutorial Del 27

  3. Aggregerande (x,y) koordinatpunktmoln i PostgreSQL

  4. Vikten av varchar-längd i MySQL-tabellen