【问题标题】:Case insensitive schema object names with case sensitive comparisons不区分大小写的架构对象名称,带有区分大小写的比较
【发布时间】:2012-06-27 11:58:25
【问题描述】:

有没有办法在 SQL Server 中混合大小写 insensitive 架构对象名称与大小写 sensitive 比较?

我的数据库中的所有字符串列都使用 CS(区分大小写)排序规则,但是我无法在数据库级别切换到 CS 排序规则,因为它是由旧应用程序管理的,该应用程序在其进行的查询中使用不一致的架构对象名称大小写.

例如我需要如下查询才能成功执行并返回0:

select count(*) from PeRsOn where 'A' = 'a'

【问题讨论】:

    标签: sql sql-server schema collation case-sensitive


    【解决方案1】:

    您可以另外指定文字的排序规则,然后使用它代替在实例、数据库或列级别上指定的排序规则:

    SELECT count(*) 
    FROM PeRsOn 
    WHERE 'A' COLLATE Latin1_General_CS_AS = 'a' COLLATE Latin1_General_CS_AS
    

    【讨论】:

    • 有趣,我没有意识到这一点。不幸的是,遗留应用程序与数据库无关,因此我不能使用这种 MSSQL 特定语法。事实上,我给出的示例查询是用于确定底层数据库是否区分大小写的通用方法。
    • @NathanBaulch - 您需要将数据库排序规则更改为区分大小写或在查询中添加显式 COLLATE 子句以使其区分大小写。没有其他方法可以进行区分大小写的比较。
    • 这就是我害怕的。我希望找到一种在数据库级别独立配置模式对象名称和比较敏感度的方法。
    猜你喜欢
    • 1970-01-01
    • 2016-11-24
    • 2011-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-18
    相关资源
    最近更新 更多