我尝试选择一些包含特殊字符的特殊记录,但 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)
但在结果(打印)中我看到:
SELECT * FROM MyTable WHERE MyFieldName LIKE '%¤÷þ?%'
如您所见,字符串的某些部分转换为 (?) 字符,此问题导致我的SELECT
命令返回空值。
我尝试将运行查询的数据库的排序规则更改为:
SQL_Latin1_General_CP1_CI_AS
它适用于一些特殊的字符串,但它也不支持我的所有字符串。所以,问题来了:我怎样才能告诉 SQL Server,请不要更改我的字符串 ascii 代码?有没有办法(或任何排序规则)说 SQL Server 看到的字符串与现实中的字符串完全一样?
PS:我使用的是 SQL Server 2008 R2。