有没有办法创建如下的计算列:
HASHBYTES('SHA1', (SELECT [EmployeeID],[ClientID] FOR XML RAW))
我想保留FOR XML RAW,因为它是在其他地方完成的,但是它说子查询不能在Computed Columns中使用。
答案 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)) + '"/>' ))