如何使用 SQL Server 在 `=` 之前和之后交换值? [英] How to swap values between before and after `=` using SQL Server?

查看:60
本文介绍了如何使用 SQL Server 在 `=` 之前和之后交换值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在参数 @Data 中声明并设置了一个值作为 ACCOUNT_NO|none|M=ACCOUNT_NO,ADD1|none|M=ADD1

I have declared and set a value in parameter @Data as ACCOUNT_NO|none|M=ACCOUNT_NO,ADD1|none|M=ADD1

我需要得到一个结果 ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M.

I need to get a result as ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M.

这意味着我需要在 =

Declare @Data varchar(100);

Set @Data ='ACCOUNT_NO|none|M=ACCOUNT_NO,ADD1|none|M=ADD1'

select @Data

如何使用 SQL Server 在 = 之前和之后交换值?

How to swap the values between before and after = using SQL Server?

执行查询时的预期输出ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M.任何人都可以提供一个想法来做这个吗?

Expected Output if I execute the query ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M. Can anyone give an idea to do this one?

推荐答案

试试这个:

Declare @Data varchar(100)='ACCOUNT_NO|none|M=ACCOUNT_NO,ADD1|none|M=ADD1';

WITH
myCTE1 AS
(
    SELECT CAST('<root><r>' + REPLACE(@Data,',','</r><r>') + '</r></root>' AS XML) AS parts1
)
,myCTE2 AS
(
    SELECT CAST('<root><r>' + REPLACE(p1.x.value('.','varchar(max)'),'=','</r><r>') + '</r></root>' AS XML) as parts2 
    FROM myCTE1
    CROSS APPLY parts1.nodes('/root/r') AS p1(x)
)
SELECT STUFF
(
    (
        SELECT ',' + parts2.value('/root[1]/r[2]','varchar(max)') + '=' + parts2.value('/root[1]/r[1]','varchar(max)')
        FROM myCTE2
        FOR XML PATH(''),TYPE
    ).value('.','varchar(max)'),1,1,'');

/* Result
ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M
*/

这篇关于如何使用 SQL Server 在 `=` 之前和之后交换值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆