我使用以下查询分割名称,如下所示:
select value from STRING_SPLIT('Name1~Name2~Name3' , '~' );
如何获得第二个名称,即Name2
,而不使用WHERE
条件?
注意:名称可以是动态的
答案 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