我想在数据库中找到重复的数据
我的查询就像这样
SELECT ID, FK1,FK2,FK3 , COUNT( * ) as duplicate
FROM Pilkada.dbo.Transaction
Group by ID, FK1,FK2,FK3
having COUNT(*) >1
数据会像这样返回
但是当我选择数据重复的查询结果时:
问题是如何在区分大小写的情况下在sql server上查找重复数据。
所以查询可以区分它真的重复与否。
谢谢
对不起,我的大四学生只是在玩弄他刚刚展示的数据 链接服务器是真的,服务器是关心敏感的 请标记此问题已结束。
答案 0 :(得分:3)
使用归类。在下面的示例中,我使用了波兰语校对,但您可以使用另一种。
CI =不区分大小写,AI =重音不敏感,CS =区分大小写,AS =重音敏感
SELECT
ID,
FK1 COLLATE Polish_CI_AI,
FK2 COLLATE Polish_CI_AI,
FK3 COLLATE Polish_CI_AI,
COUNT(*) as duplicate
FROM Pilkada.dbo.Transaction
GROUP BY
ID,
FK1 COLLATE Polish_CI_AI,
FK2 COLLATE Polish_CI_AI,
FK3 COLLATE Polish_CI_AI
HAVING COUNT(*) >1
一些例子
CREATE TABLE #t (
k1 varchar(10)
)
INSERT INTO #t VALUES ('Mars')
INSERT INTO #t VALUES ('mars')
INSERT INTO #t VALUES ('maRs')
INSERT INTO #t VALUES ('MARS')
SELECT *
FROM #t
WHERE k1 = 'mars'
SELECT k1 COLLATE Polish_CS_AS , COUNT(*)
FROM #t
GROUP BY
k1 COLLATE Polish_CS_AS
SELECT k1 COLLATE Polish_CI_AS , COUNT(*)
FROM #t
GROUP BY
k1 COLLATE Polish_CI_AS
DROP TABLE #t