Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hàm chuỗi T-SQL:sự khác biệt giữa việc sử dụng Trái / Phải và Chuỗi con và hành vi lạ

Bạn có dấu cách ở cuối

RIGHT sẽ mang lại khoảng trắng nhưng LEN bỏ qua dấu cách ở cuối

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

Xem ĐẶT ANSI_PADDING

Lưu ý:bạn sẽ không nhận NULL cho đầu vào không phải 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. Các bảng thay thế được sao chép trong SQL Server 2008 R2

  2. Xuất kết quả truy vấn sang tệp .csv trong SQL Server 2008

  3. Sử dụng cơ sở dữ liệu bên trong một thủ tục được lưu trữ

  4. Cách thay đổi tất cả các cột Sql của một DataType thành một loại khác

  5. Làm thế nào để tham chiếu một CTE hai lần?