【发布时间】:2013-03-29 12:26:46
【问题描述】:
我尝试选择一些包含特殊字符的特殊记录,但 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。
【问题讨论】:
-
MyFieldName有什么类型?更改数据库排序规则对现有列没有任何作用,仅供参考。 -
好吧,
@TSQL是varchar(8000)? -
天哪!只有我的部分代码被复制(我从没想过)。谢谢老兄。
标签: sql-server sql-server-2008-r2 collation