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

T-SQL-strengfunktioner:forskel mellem at bruge venstre/højre og understreng og mærkelig adfærd

Du har efterfølgende mellemrum

RIGHT vil give mellemrum, men LEN ignorerer efterfølgende mellemrum

DECLARE @foo varchar(100)
SET @foo = 'abc12345def   ' --3 spaces

--right or substring
SELECT RIGHT(@foo, 3)
SELECT SUBSTRING(@foo, LEN(@foo)-2, LEN(@foo))

--demonstrate you get spaces
SELECT REPLACE(RIGHT(@foo, 3), ' ', 'z') --single space

--length differences
SELECT LEN(@foo), DATALENGTH(@foo)

--solution
SELECT RIGHT(RTRIM(@foo), 3)
--or trim your column values before storing

Se INDSTIL ANSI_PADDING

Bemærk:du ikke få NULL for ikke-NULL input...

--only NULL if you send in NULL
SELECT RIGHT(NULL, 3)



  1. Hvad er den hurtigste måde at lave en masseindsættelse i Postgres?

  2. Intermitterende ODBC-forbindelsesfejl

  3. Tilføj ordensindikatoren til en dato i PostgreSQL

  4. Oracle REGEXP_SUBSTR | Hent streng mellem to skilletegn