合并两个 STRING_SPLIT

nim*_*_10 4 sql t-sql sql-server sql-server-2016

考虑下面的问题:我有两个要分割的字符串:

STR1 = 'b;a;c;d;e'

STR2 = '3;1;4;2;5'
Run Code Online (Sandbox Code Playgroud)

我想根据它们的索引拆分和合并这两个字符串,结果是:

b -> 3
a -> 1
c -> 4
d -> 2
e -> 5
Run Code Online (Sandbox Code Playgroud)

我尝试过STRING_SPLIT,但order by对它们进行了排序。

SELECT A.VALUE, B.VALUE FROM (
    SELECT VALUE, ROW_NUMBER() OVER(ORDER BY VALUE) AS RW
    FROM STRING_SPLIT('b;a;c;d;e', ';')
) A
INNER JOIN (
    SELECT VALUE, ROW_NUMBER() OVER(ORDER BY VALUE) AS RW
    FROM STRING_SPLIT('3;1;4;2;5', ';')
) B
ON A.RW = B.RW
Run Code Online (Sandbox Code Playgroud)

这会产生以下结果:

a   1
b   2
c   3
d   4
e   5
Run Code Online (Sandbox Code Playgroud)

scs*_*mon 6

也许是这样的?

declare @STR1 varchar(64) = 'b;a;c;d;e'

declare @STR2 varchar(64)  = '3;1;4;2;5'

;with cte as(
select
    value
    ,RN = row_number() over (order by (select null))
from
    STRING_SPLIT(@STR1,';')),

cte2 as(
select
    value
    ,RN = row_number() over (order by (select null))
from
    STRING_SPLIT(@STR2,';'))

select
    c.value + d.value
from
    cte c
    inner join 
    cte2 d on c.RN = d.RN
Run Code Online (Sandbox Code Playgroud)

  • 好吧,通常当 MS 没有提及任何内容时,就不能保证,对吗?:) (2认同)