作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我正在尝试编写一个 UDF,它将从字符串中提取特定数据。
'random text here Task 1234 blah blah more text task 4567'
我想提取“任务 1234 和任务 4567”并让它们像这样显示
'Task 1234, task 4567'
到目前为止,这是我得到的,但似乎只能完成第一个任务或第二个任务,但不能同时完成这两个任务。
Alter Function [dbo].[fn_GetTask](@strText VARCHAR(MAX))
RETURNS varchar(1000)
AS
BEGIN
while patindex('%Task%', @strText) > 0
BEGIN
SET @strText = substring(@strText, (CHARINDEX(substring(@strText, Patindex('%Task%', @strText) +4, 5), @strText, 5)),5)
end
RETURN @strText
END
这是漫长的一天。我觉得我在这里缺少一些非常基本的东西。
最佳答案
ALTER Function [dbo].[fn_GetTask](@strText VARCHAR(MAX))
RETURNS varchar(1000)
AS
BEGIN
DECLARE @ReturnString VARCHAR(1000) = ''
WHILE PATINDEX('%Task%', @strText) > 0
BEGIN
DECLARE @FoundString VARCHAR(1000) = SUBSTRING(@strText,PATINDEX('%Task%',@strText),9)
IF (LEN(@ReturnString) > 0)
BEGIN
SET @ReturnString += ', '
END
SET @ReturnString += @FoundString
SET @strText = RIGHT(@strText,LEN(@strText) - PATINDEX('%' + @FoundString + '%',@StrText))
END
RETURN @ReturnString
END
正如我在你的 while 循环中提到的那样,你在哪里覆盖了你的字符串,你在哪里搜索了你的结果字符串。你没有一种机制来修剪原始字符串或跟踪你的进度,这是一种方法,我使用了额外的变量,这样我就不必多次嵌套相同的语句。
关于sql-server - 如何在 SQL Server 字符串中查找和显示模式的所有实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986490/
我是一名优秀的程序员,十分优秀!