我有一个
#
分隔字符串 @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
您可以使用 replace 和 parsename 的组合:
declare @str varchar(3000) = 'ref.products,0#dbo.sales,55#mdm.claims,78';
select value, ParseName(Replace(value, ',', '.'), 2)
from string_split(@str,'#');