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

Ký tự rỗng trong TSQL là gì?

Có hai hành vi khác nhau trong câu trả lời của Cade Roux:thay thế thành công (khi sử dụng đối chiếu SQL) và không thành công (đối chiếu Windows được sử dụng). Lý do là loại đối chiếu được sử dụng.

Hành vi này đã được gửi tới Microsoft gần 4 năm trước:

Hỏi: Khi thử thay thế một ký tự NUL bằng ký tự Replace (), điều này hoạt động là giá trị có đối chiếu SQL, nhưng không phải đối chiếu aWindows.

Đ: Điều này là do 0x0000 là một ký tự không xác định trong Windowscollations. Tất cả các ký tự không xác định sẽ bị bỏ qua trong quá trình so sánh, sắp xếp và đối sánh mẫu. Vì vậy, searing for'a '+ char (0) thực sự đang tìm kiếm'a' và tìm kiếm char (0) tương đương với chuỗi rỗng.

Cách xử lý đặc tính không xác định hơi khó hiểu, nhưng đây là cách mà Windows xác định để sắp xếp chúng và SQL Server tuân theo API Windows chung.

Trong đối chiếu SQL, không có ký tự không xác định notionof. Mỗi điểm mã được chỉ định một trọng số, đó là lý do tại sao chúng tôi không thấy có vấn đề gì ở đó.

nhưng rất tiếc, nó vẫn không có giấy tờ.

Vì vậy, có vẻ như giải pháp duy nhất là thay đổi đối chiếu thành đối chiếu SQL (ví dụ:SQL_Latin1_General_CP1_CI_AS cũng có thể được sử dụng).

Tôi đã xóa câu trả lời trước đó của mình là không cần thiết



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Trả lại số phân vùng cho mỗi hàng khi truy vấn bảng phân vùng trong SQL Server (T-SQL)

  2. Điều gì làm cho một câu lệnh SQL có thể phân loại được?

  3. Sự khác biệt giữa bảng DELETE và TRUNCATE trong SQL Server

  4. Cách sử dụng thủ tục lưu trữ ‘sp_server_info’ trong SQL Server

  5. Máy chủ SQL SHOWPLAN_ALL