sql >> Database >  >> RDS >> Sqlserver

T-SQL String-functies:verschil tussen het gebruik van Links/Rechts en Substring en vreemd gedrag

Je hebt volgspaties

RECHTS levert spaties op, maar LEN negeert volgende spaties

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

Zie ANSI_PADDING INSTELLEN

Opmerking:u niet krijg NULL voor niet-NULL-invoer...

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



  1. SQL Server - Wat gebeurt er wanneer een rij in een tabel wordt bijgewerkt?

  2. Hoe terug te draaien wanneer er een fout optreedt tijdens het uitvoeren van de opdracht sql loader?

  3. java.sql.SQLException:geen geschikte driver gevonden voor jdbc:sqlserver

  4. PDO aanroepen vanuit een functie