San*_*adi 1 t-sql sql-server split
我正在使用下面的查询来拆分名称,如下所示:
select value from STRING_SPLIT('Name1~Name2~Name3' , '~' );
Run Code Online (Sandbox Code Playgroud)
如何获得第二个名字,即Name2
,不使用WHERE
条件?
注意:名称可以是动态的
STRING_SPLIT
您可以将字符串转换为XML,然后使用.value
来检索第二个元素,而不是使用:
SELECT CAST('<t>' + REPLACE('Name1~Name2~Name3' , '~','</t><t>') + '</t>' AS XML).value('/t[2]','varchar(50)')
Run Code Online (Sandbox Code Playgroud)
尝试PARSENAME函数
SELECT PARSENAME( REPLACE('Name1~Name2~Name3','~','.'),2)
Run Code Online (Sandbox Code Playgroud)
输出
Name2
Run Code Online (Sandbox Code Playgroud)
PARSENAME返回对象名称的指定部分。可以检索的对象部分是对象名称、所有者名称、数据库名称和服务器名称。