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

SQL Server 2008 Chuỗi trống so với Không gian

varchar s và bình đẳng là điều khó khăn trong TSQL. LEN hàm cho biết:

Trả về số ký tự, thay vì số byte, của biểu thức chuỗi đã cho, loại trừ khoảng trống ở cuối .

Bạn cần sử dụng DATALENGTH để có được một byte đúng số lượng dữ liệu được đề cập. Nếu bạn có dữ liệu unicode, hãy lưu ý rằng giá trị bạn nhận được trong trường hợp này sẽ không giống với độ dài của văn bản.

print(DATALENGTH(' ')) --1
print(LEN(' '))        --0

Khi nói đến sự bình đẳng của các biểu thức, hai chuỗi được so sánh để bình đẳng như sau:

  • Nhận chuỗi ngắn hơn
  • Đệm có khoảng trống cho đến khi độ dài bằng với độ dài của chuỗi dài hơn
  • So sánh cả hai

Đó là bước ở giữa gây ra kết quả không mong đợi - sau bước đó, bạn đang so sánh hiệu quả khoảng trắng với khoảng trắng - do đó chúng được coi là bằng nhau.

LIKE hoạt động tốt hơn = trong tình huống "khoảng trống" vì nó không thực hiện đệm trống trên mẫu bạn đang cố gắng đối sánh:

if '' = ' '
print 'eq'
else
print 'ne'

Sẽ cung cấp cho eq trong khi:

if '' LIKE ' '
print 'eq'
else
print 'ne'

Sẽ cung cấp cho ne

Cẩn thận với LIKE mặc dù:nó không đối xứng:nó coi khoảng trắng ở cuối là quan trọng trong mẫu (RHS) nhưng không phải là biểu thức đối sánh (LHS). Phần sau được lấy từ đây:

declare @Space nvarchar(10)
declare @Space2 nvarchar(10)

set @Space = ''
set @Space2 = ' '

if @Space like @Space2
print '@Space Like @Space2'
else
print '@Space Not Like @Space2'

if @Space2 like @Space
print '@Space2 Like @Space'
else
print '@Space2 Not Like @Space'

@Space Not Like @Space2
@Space2 Like @Space


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để trả về nhiều tập kết quả với SqlCommand?

  2. Chuyển đổi Mili giây UTC thành DATETIME trong máy chủ SQL

  3. 3 phương pháp để xây dựng lại tất cả các chỉ mục cho tất cả các bảng với T-SQL trong cơ sở dữ liệu SQL Server

  4. Tạo cơ sở dữ liệu theo chương trình trong SQL Server

  5. Tìm các ngày Thứ Hai giữa 2 ngày