问题描述
Create Table #temp
(
Change varchar(20),deleted_user_id int,deleted_field_id int,deleted_value nvarchar (4000),inserted_user_id int,inserted_field_id int,inserted_value nvarchar (4000),is_difference int,)
insert into #temp values ('UPDATE','1','11','3,2,1,4','1,3,'0')
insert into #temp values ('UPDATE','12','',3','2',2','0')
select * from #temp
我正在使用Microsoft sql Server Management Studio
我正在尝试将删除的值与插入的值进行比较。如果存在差异,则将is_difference列设置为1或仅返回行。
到目前为止,我正在考虑进行字符串拆分。也许使用小编功能。但不太确定如何在单个查询中使用所有这些选项,或者是否有其他选择。任何帮助表示赞赏。预先感谢
解决方法
此查询到目前为止有效。
;with cte as
(select isnull(deleted_user_id,inserted_user_id) as user_id,isnull(deleted_field_id,inserted_field_id) as field_id,stuff(
(
SELECT ','+ value FROM STRING_SPLIT (deleted_value,',') group by value order by value FOR XML PATH('')
),1,'') as sorted_deleted_value,inserted_value
from #temp )
select * from cte where sorted_deleted_value <> inserted_value