从分隔字符串中单独获取字符串

问题描述 投票:0回答:1

我有一个

#
分隔字符串
@str
。我想从中单独获取实体名称 我尝试了下面的方法,它有效,但是我需要申请很多
CHARINDEX
才能使其发挥作用。 有没有其他简单的方法可以使用更少的代码我可以在这里使用。是否可以将
CHARINDEX
函数作为 TSQL 中的表达式传递

begin 
  declare @str varchar(3000) = ''
  set @str = 'ref.products,0#dbo.sales,55#mdm.claims,78'

  SELECT value, 
    SUBSTRING( left(value,CHARINDEX(',',value)-1), CHARINDEX('.',value)+1, CHARINDEX(',',value)-1 )  entity_without_schema
  from string_split(@str,'#')
end 

预期输出:

 value             entity_without_schema
 ref.products,0    products
 dbo.sales,55      sales
 mdm.claims,78     claims
sql-server tsql
1个回答
0
投票

您可以使用 replaceparsename 的组合:

declare @str varchar(3000) = 'ref.products,0#dbo.sales,55#mdm.claims,78';

select value, ParseName(Replace(value, ',', '.'), 2)
from string_split(@str,'#');
© www.soinside.com 2019 - 2024. All rights reserved.