如何使用 SQL 服务器在 `=` 前后交换值?
How to swap values between before and after `=` using SQL Server?
我已经在参数 @Data
中声明并设置了一个值 ACCOUNT_NO|none|M=ACCOUNT_NO,ADD1|none|M=ADD1
我需要得到 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服务器交换=
前后的值?
执行查询时的预期输出 ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M
。任何人都可以提出一个想法吗?
试试这个:
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
*/
我已经在参数 @Data
中声明并设置了一个值 ACCOUNT_NO|none|M=ACCOUNT_NO,ADD1|none|M=ADD1
我需要得到 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服务器交换=
前后的值?
执行查询时的预期输出 ACCOUNT_NO=ACCOUNT_NO|none|M,ADD1=ADD1|none|M
。任何人都可以提出一个想法吗?
试试这个:
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
*/