在字段中查找特定字符的出现并检索数据直到数据开始
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
我有一个字段可以多次出现特定的分隔符 - 在我的例子中它是'*'。分隔符可以在字段中最多出现 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