我尝试选择一些包含特殊字符的特殊记录,但SQL Server在运行查询之前更改了我的字符串字符.
例如:
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)
Run Code Online (Sandbox Code Playgroud)
但在结果(打印)中我看到:
SELECT * FROM MyTable WHERE MyFieldName LIKE '%¤÷þ?%'
Run Code Online (Sandbox Code Playgroud)
当您看到字符串的某些部分转换为(?)字符时,此问题会导致我的SELECT命令返回null值.
我尝试将运行查询的数据库的排序规则更改为:
SQL_Latin1_General_CP1_CI_AS
Run Code Online (Sandbox Code Playgroud)
它可以正常使用一些特殊的字符串,但它也不支持我的所有字符串.所以,问题在这里:我怎么能告诉SQL Server,请不要更改我的字符串ascii代码?是否有任何方式(或任何整理)说SQL Server完全按照现实的方式查看字符串?
PS:我正在使用SQL Server 2008 R2.