拆分并获取第二行作为值

时间:2018-06-14 07:08:28

标签: sql-server tsql split

我使用以下查询分割名称,如下所示:

select value from STRING_SPLIT('Name1~Name2~Name3' , '~' );

如何获得第二个名称,即Name2而不使用WHERE条件

注意:名称可以是动态的

enter image description here

3 个答案:

答案 0 :(得分:4)

您可以将字符串转换为XML,然后使用STRING_SPLIT检索第二个元素,而不是使用.value

SELECT CAST('<t>' + REPLACE('Name1~Name2~Name3' , '~','</t><t>') + '</t>' AS XML).value('/t[2]','varchar(50)')

答案 1 :(得分:3)

尝试以下代码:

SELECT TOP 1 T.* FROM 
(SELECT TOP 2 * FROM STRING_SPLIT('Name1~Name2~Name3' , '~' ) ORDER BY value ASC) AS T
ORDER BY value DESC;

答案 2 :(得分:1)

试试这个

SELECT PARSENAME( REPLACE('Name1~Name2~Name3','~','.'),2)

输出

Name2