【问题标题】:SQL Server case/collation issueSQL Server 案例/排序规则问题
【发布时间】:2011-11-04 16:11:57
【问题描述】:

我今天在客户数据库中遇到了一个奇怪的情况。 SQL Server 2005,数据库排序规则不区分大小写,所以我可以使用任何大小写编写 SQL 查询,没有任何问题......除了一个。 一个特定表中的一个特定列称为“DeadZone”。 如果我这样查询: '从表名中选择死区' - 我得到一个未找到列的错误 像这样: '从 TableName 中选择 DeadZone' - 它有效。 现在是踢球者,像这样: '从 TableName 中选择 deadZone' - 它有效!

所以只有列名中的“Z”是区分大小写的! 我在同一个表中创建了一个类似的列名,其中包含一个“Z”,并且该列不区分大小写。

有什么想法吗?我确信我可以解决这个问题,可能是通过删除并重新添加该列,但最好深入到这一列的底部。 顺便说一句,该数据库位于匈牙利的 PC 上,那么是否有可能是某些匈牙利语特有的字符问题导致了这种情况?记住另一个带有“Z”的列名没有同样的问题。

-格雷姆

【问题讨论】:

    标签: sql-server database collation


    【解决方案1】:

    确切的排序规则是什么? Hungarian does have a special Dz letter,可能与 D 的整理方式不同 - 所以你的问题实际上可能是 d,而不是 z。

    Deadzone is [D][e][a][dz][o][n][e]
    DeadZone is [D][e][a][d][Z][o][n][e]
    deadZone is [d][e][a][d][Z][o][n][e]
    

    如果可以的话,我会投票给你 +1000 分,因为我本月见过最奇怪的事情。

    查看与 LY 相关的问题:http://www.sqlservercentral.com/Forums/Topic19439-9-1.aspx

    而且我不认为删除并重新添加您的专栏会有所帮助。如果您要使用匈牙利数据库排序规则,您应该只使用真正的匈牙利列名!

    【讨论】:

    • 我认为您可能会在那里找到一些东西,我想我的下一步是尝试创建另一个包含“dZ”的列,看看会发生什么。非常感谢您不厌其烦地为我解答。
    • @Graeme 另外 DZ 应该与 dz 相同,并且 dZ 和 Dz 可能相同。凉爽的?不是!
    猜你喜欢
    • 2010-10-25
    • 1970-01-01
    • 2011-05-18
    • 1970-01-01
    • 2011-05-05
    • 2011-11-14
    • 1970-01-01
    • 1970-01-01
    • 2012-06-08
    相关资源
    最近更新 更多