【问题标题】:String split ,sort and compare with another column within a table SQL字符串拆分,排序并与表 SQL 中的另一列进行比较
【发布时间】:2020-12-09 11:08:02
【问题描述】:
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','11','1,2,3,4','0')
insert into #temp values ('UPDATE','1', '12', '','1','12','1,2,3','0')
insert into #temp values ('UPDATE','2', '12', '1,2','2','12','','0')

select * from #temp

我正在使用 Microsoft SQL 服务器管理工​​作室

我正在尝试将删除的值与插入的值进行比较。如果存在差异,则将 is_difference 列设置为 1 或仅返回行。

到目前为止,我正在考虑进行字符串拆分。也许使用东西功能。但不太确定如何在单个查询中使用所有这些,或者是否有任何其他选项。任何帮助表示赞赏。提前致谢

【问题讨论】:

    标签: sql split for-xml-path stuff


    【解决方案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,1,'') as sorted_deleted_value , inserted_value 
        from #temp ) 
    select * from cte where sorted_deleted_value <> inserted_value
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 2015-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-07
      • 2021-08-27
      相关资源
      最近更新 更多