Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

T-SQL String Functions:разлика между използването на Left/Right и Substring и странно поведение

Имате интервали в края

RIGHT ще даде интервали, но LEN игнорира интервалите в края

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

Вижте SET ANSI_PADDING

Забележка:няма вземете NULL за не-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. Има ли начин да се извлече дефиницията на изглед от SQL Server с помощта на обикновен ADO?

  2. Как да вмъкнете запис и да върнете новосъздадения идентификатор с помощта на една SqlCommand?

  3. Как да намерите езика по подразбиране на потребителя в SQL Server (T-SQL)

  4. Драйверът Go with SQL Server не може да се свърже успешно, неуспешно влизане

  5. Не може да се свърже с SQLServer база данни в Java приложение