【问题标题】:Stop auto conversion of string in SQL Server [duplicate]在 SQL Server 中停止字符串的自动转换 [重复]
【发布时间】:2016-09-26 10:10:08
【问题描述】:

假设我有一个表my_table,它有两行:

col1
-----
AAA
aaa

如果我这样做,我会遇到问题

select col1, count(*)   
from my_table  
group by col1

我明白了

col1 | count(*)
----------------
AAA  |    2

有没有办法阻止这种情况并区分AAAaaa?我很难将我的结果与其他数据库进行核对。

问候,

【问题讨论】:

  • 将排序规则更改为区分大小写。

标签: sql-server sql-server-2008


【解决方案1】:

我猜你和这个问题的作者遇到了同样的问题:How to do a case sensitive search in WHERE clause (I'm using SQL Server)?

数据库的排序规则可能不区分大小写,您必须对其进行更改。无论如何,这将是我的猜测。

这是另一个问题的公认答案提供的有关该主题的相关文档:http://vyaskn.tripod.com/case_sensitive_search_in_sql_server.htm

【讨论】:

    【解决方案2】:

    查询时使用区分大小写的排序规则:

    SELECT col1 COLLATE Latin1_General_CS_AS as name, COUNT(*)
    FROM my_table
    GROUP BY col1 COLLATE Latin1_General_CS_AS as name
    

    您还可以考虑将name 列的排序规则永久更改为区分大小写。

    【讨论】:

      【解决方案3】:
      Select col1 Collate SQL_Latin1_General_CP1_CS_AS, COUNT(col1)
      From my_table  
      Group By col1 Collate SQL_Latin1_General_CP1_CS_AS
      

      【讨论】:

        【解决方案4】:

        使用正确的排序规则: SQL_Latin1_General_CP1_CS_AS

        如下:

           Select col1 Collate SQL_Latin1_General_CP1_CS_AS, count (col1)
           From my_table  
           Group By col1 Collate SQL_Latin1_General_CP1_CS_AS 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-02-06
          • 1970-01-01
          • 1970-01-01
          • 2015-04-21
          • 2013-02-26
          • 1970-01-01
          • 2012-12-18
          • 1970-01-01
          相关资源
          最近更新 更多