1

要分析我导入的跟踪文件,它希望有一个唯一的值 Select Distinct TextData from myImportedTraceFile

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

  • 使用HASHBYTES('MD5', CAST(TextData AS varchar(7999))) As TextData_HashBytes削减几行(见这个回复

我该怎么做才能为Select Distinct TextData from ..列中的每个唯一值 ()创建唯一标识符TextData

更新

根据 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)。所以一些空格被删除了。

4

1 回答 1

1

您可以使用派生表SELECT DISTINCT

SELECT NEWID() AS UniqueID, TextData
FROM (
    SELECT DISTINCT CAST(TextData AS nvarchar(MAX)) AS TextData
    FROM myImportedTraceFile
    ) AS UniqueQueries;
于 2016-11-10T12:55:01.087 回答