Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Funkcje ciągów T-SQL:różnica między używaniem Left/Right i Substring a dziwnym zachowaniem

Masz końcowe spacje

PRAWY da spacje, ale LEN ignoruje końcowe spacje

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

Zobacz USTAW ANSI_PADDING

Uwaga:nie uzyskaj NULL dla wejścia innego niż NULL...

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy istnieje kombinacja LIKE i IN w SQL?

  2. Konwertuj bazę danych .sdf na bazę danych .mdf

  3. Wewnętrzne elementy SQL Server:operatorzy problematyczni Pt. II – haszowanie

  4. JSON_QUERY() Przykłady w SQL Server (T-SQL)

  5. Jak działa funkcja konwersji SQL podczas konwertowania daty i godziny na zmiennoprzecinkową?