字符串拆分,排序并与表SQL中的另一列进行比较

问题描述

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