Compled Column FOR XML RAW HASHBYTES

时间:2014-10-16 17:18:30

标签: sql sql-server sql-server-2008

有没有办法创建如下的计算列:

HASHBYTES('SHA1', (SELECT [EmployeeID],[ClientID] FOR XML RAW))

我想保留FOR XML RAW,因为它是在其他地方完成的,但是它说子查询不能在Computed Columns中使用。

2 个答案:

答案 0 :(得分:0)

我继续并改变了计算哈希字节的功能,如下所示:

HASHBYTES('SHA1', ISNULL(CONVERT(varchar(20),[EmployeeID]),'') + '|' + ISNULL(CONVERT(varchar(20),[ClientID]),''))

这比使用FOR XML RAW处理的数据少得多,似乎提供了我需要的东西,因为它作为一个持久的计算列工作

答案 1 :(得分:-1)

FOR XML RAW实际上创建了这种形式的XML

<row EmployeeID="1" ClientID="1"/>

我们可以使用下面的标量表达式来模拟相同的

 mycol AS 
HASHBYTES('SHA1', 
( '<row EmployeeID ="' + 
   cast(EmployeeId as varchar(10))+ ' ClientId ="' +  
   cast(ClientID as varchar(10)) + '"/>' ))