【发布时间】:2018-04-25 03:37:37
【问题描述】:
我有一个 DB 列,其中包含在未检查大小写时可能相互匹配的值:
my_column
---------
foo
bar
BAR
baz
列定义如下所示:
[my_column] NVARCHAR (15) COLLATE SQL_Latin1_General_CP1_CS_AS NULL
当我这样选择时:
SELECT my_column FROM my_table ORDER BY my_column;
...我可以看到所有结果,但我只想查看将LOWER() 应用于所有值时重复的值,以及有多少重复值。所以我理想的结果是这样的:
my_column | count
----------+-------
bar | 2
我假设这里需要GROUP BY 或HAVING,但我不确定你如何告诉SQL“找到所有匹配自己的东西,当变成小写时”。 p>
【问题讨论】:
-
您需要单独计算 bar 和 BAR 吗?
-
no @AayQue - 如果 BAR 和 bar 出现,它们被认为是重复的,我想显示 2 来表示这两个事件。
-
可能值得探索一下可供您使用的不同排序规则设置docs.microsoft.com/en-us/previous-versions/sql/… 此外,SQL 服务器默认不区分大小写 - 您是否有必要为整个数据库启用区分大小写?跨度>
-
使用函数将导致您在该列上的任何索引被忽略。你能改变那张桌子上的排序规则吗?还是您需要使用区分大小写的排序规则?
标签: sql sql-server