【发布时间】:2017-03-24 11:38:30
【问题描述】:
要分析我导入的跟踪文件,它希望Select Distinct TextData from myImportedTraceFile 具有唯一值
我尝试使用hashbyte,尽管我不确定MD5 是否是创建唯一标识符的正确工具。即使是这样(如果是这样,请告诉我)然后我仍然有问题
- 使用
HASHBYTES('MD5', CAST(TextData AS varchar(7999))) As TextData_HashBytes剪切几行(see this reply)
如何为 TextData 列中的每个唯一值 (Select Distinct TextData from ..) 创建唯一标识符?
更新
根据 Dan 的帖子,我创建了这个测试用例
Drop Table #Temp
Create Table #Temp
(
A int,
B NText
)
Insert Into #Temp ( A, B)
Select 1, 'some space' UNION ALL
Select 2, ' some space' UNION ALL
Select 3, ' some space ' UNION ALL
Select 4, 'some space ' UNION ALL
Select 5, ' some space ' UNION ALL
Select 6, ' some space '
-- this returns 6 rows
Select
HASHBYTES('MD5', CAST(B AS nvarchar(MAX)))
, CAST(B AS nvarchar(MAX)) as B from #Temp;
-- this returns 3 rows
SELECT NEWID() AS UniqueID, B FROM
( Select DISTINCT CAST(B AS nvarchar(MAX)) AS B
FROM #Temp
) sq
这三行是结果
' some space ' -- 2sp B + 1sp E --> row 5
' some space' -- 1sp B + 0sp E --> row 2
'some space ' -- 0sp B + 3sp E --> row 4
不清楚如何处理第 1 行 (0sp)、3 (1sp B+E) 和 6 (2sp B+E)。 所以一些空白被删除了。
【问题讨论】:
标签: sql-server sql-server-2008-r2 ntext