Tôi cố gắng chọn một số bản ghi đặc biệt chứa các ký tự đặc biệt nhưng SQL Server thay đổi các ký tự chuỗi của tôi trước khi chạy truy vấn.Máy chủ SQL đã thay đổi chuỗi của tôi trước khi chạy truy vấn
Ví dụ:
DECLARE @param NVARCHAR(30)
SET @param=N'¤÷þ'--this is my special string that i want to be searched exactly.
DECLARE @TSQL varchar(8000)
SET @TSQL = 'SELECT * FROM MyTable WHERE MyFieldName LIKE %' + @param + '% '
PRINT @TSQL
--EXECUTE (@TSQL)
Nhưng trong kết quả (in) Tôi thấy: (?)
SELECT * FROM MyTable WHERE MyFieldName LIKE '%¤÷þ?%'
Như bạn thấy một số phần của chuỗi chuyển đổi sang nhân vật, vấn đề này gây SELECT
của tôi lệnh trả về giá trị null.
Tôi cố gắng thay đổi collation của cơ sở dữ liệu mà tôi chạy truy vấn để:
SQL_Latin1_General_CP1_CI_AS
Nó hoạt động tốt với một số chuỗi đặc biệt nhưng nó cũng không hỗ trợ tất cả các chuỗi của tôi. Vì vậy, câu hỏi là ở đây: làm thế nào tôi có thể nói với SQL Server, xin vui lòng không thay đổi mã ascii chuỗi của tôi? Có cách nào (hoặc bất kỳ đối chiếu nào) để nói SQL Server thấy chuỗi chính xác như trong thực tế không?
PS: Tôi đang sử dụng SQL Server 2008 R2.
'MyFieldName' có loại nào? Thay đổi đối chiếu DB không làm gì với các cột hiện có, fyi. – usr
Bạn mong đợi điều gì, '@ TSQL' là' varchar (8000) '? –
OMG! Chỉ một phần mã của tôi được sao chép (tôi không bao giờ nghĩ về điều đó). – Jupiter