【发布时间】:2014-05-11 23:11:30
【问题描述】:
我需要在 SQL Server 2008 的存储过程中进行区分大小写的比较,但不知道如何实现。
我已经尝试了以下代码:
Declare @andJob varchar(1)
select @andJob = (SELECT szUserdefined6 from inserted )
if @andJob like 'y%'
begin
/* Do Stuff */
end
【问题讨论】:
-
在网上搜索
collation sequences:字符串(CHAR、VARCHAR 等)使用不同的排序规则存储,默认使用的是 SQL Server 中的设置。一些排序规则是区分大小写的,有些是不区分大小写的。您有一个使用区分大小写序列的服务器。要么更改服务器设置,要么手动定义要在该表中的该字段上使用的排序规则。但要小心混合/比较不同的序列,因为它需要将一个翻译成另一个。 -
我已将该字段设置为 Latin1_General_CS_AI,这对查询没有影响。
-
也尝试显式强制对
'y%'进行排序。使用执行计划检查是否正在发生任何对话。 -
@MatBailie 关于您在这里的第一条评论,此操作与服务器/实例级排序规则无关。该级别控制变量名称,但不控制它们的值。影响变量值的是数据库级别的排序规则。另外,请在下面查看我的answer。 可能正是您在上面的评论中建议的,但并不完全确定。
-
嗨@joebohen。我只是想知道您是否有机会查看我的answer。我刚刚更新了它以包含一个简单的示例,如果您不再有相同的环境可供您使用,可以复制和粘贴该示例以查看它是如何工作的(我确实意识到距离您发布这个问题已经快 5 年了; -)。
标签: sql-server sql-server-2008 tsql collation case-sensitive