在字段中查找特定字符的出现并检索数据直到数据开始

Find occurrence of a particular character in a field and retrieve data till the starting of data

我有一个字段可以多次出现特定的分隔符 - 在我的例子中它是'*'。分隔符可以在字段中最多出现 10 次,最少出现 1 次。不一定要在现场同时出现所有 10 次。根据要求,我需要找到第 n 次出现的定界符和 return 在删除定界符作为输出后从定界符到字段开头的任何可用数据。

注意 - 我没有对数据库的写入权限,因此无法创建用户定义函数来试用 instring/substring 组合。

示例:

Stack\*over\*flow\*com\*exchange\*queries\*need\*answer\*for\*thisquery\*

要求#1-找到第 2 次出现的 * 和 return 删除 *

后 LHS 上的任何内容

回答-.Stackover

要求#2-找到第 5 次出现的 * 和 return 删除 *

后 LHS 上的任何内容

回答 -Whosebugcomexchange

这一直持续到找到第 10 次。
我能够获得第一次出现和 lhs 数据,但无法找出其余出现的数据。

使用的数据库是 SQL 服务器 2014。

可能的快速解决方案:

declare @a varchar(100), @i int = 5, @j int = 0;

select @a = 'Stack\*over\*flow\*com\*exchange\*queries\*need\*answer\*for\*thisquery\*';

select @a = @a + replicate('\*', @i); -- Avoid delimiter not found

while @i > 0
    select @j = charindex('*', @a, @j + 1), @i -= 1;

select replace(left(@a, @j), '\*', '') as Result