SQL 服务器跟踪文件为 NTEXT 类型的字段 TextData 创建唯一标识符

SQL Server Trace file create unique identifier for field TextData of type NTEXT

要分析我导入的跟踪文件,它需要 Select Distinct TextData from myImportedTraceFile

的唯一值

我尝试使用 hashbyte,但我不确定 MD5 是否是创建唯一标识符的正确工具。即使是这样(如果是这样请告诉我)我仍然有问题

如何为 TextData 列中的每个唯一值 (Select Distinct TextData from ..) 创建唯一标识符?

更新

基于 Dan 的 post 我创建了这个测试用例

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) 是如何处理的。 所以一些空格被删除了,其他的则没有。

您可以使用派生的 table 和 SELECT DISTINCT:

SELECT NEWID() AS UniqueID, TextData
FROM (
    SELECT DISTINCT CAST(TextData AS nvarchar(MAX)) AS TextData
    FROM myImportedTraceFile
    ) AS UniqueQueries;