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