Html SQL查找字符串中的文本

Html SQL查找字符串中的文本,html,sql,replace,charindex,Html,Sql,Replace,Charindex,我的数据库中有一个文本字段: DECLARE @vchText varchar(max) = This is a string<>Test1<>Test2<>Test 任何人都可以想出一个好办法来纠正这一点。我在想STUFF和CHARINDEX函数有一个WHILE循环 我还应该注意的是,列表中可能不仅有1,2,3项,还有更多项,因此我无法构建它,因此它只能处理静态的1,2,3项,应该能够处理列表中的任意数量的项。试试这个。把绳子断成几段 第一部分-这是一

我的数据库中有一个文本字段:

DECLARE @vchText varchar(max) = 
 This is a string<>Test1<>Test2<>Test
任何人都可以想出一个好办法来纠正这一点。我在想STUFF和CHARINDEX函数有一个WHILE循环


我还应该注意的是,列表中可能不仅有1,2,3项,还有更多项,因此我无法构建它,因此它只能处理静态的1,2,3项,应该能够处理列表中的任意数量的项。

试试这个。把绳子断成几段

第一部分-这是一个列表:

第二部分-1.Test1.Test2 1.Test3

使用分隔符空格将第二部分转换为行。然后将行号添加到行中。追加行号和列数据

最后,将不同的行转换为由空格分隔的单行,并将其附加到第一部分


我可以通过一个循环来完成它,并使用下面的东西和charindex

    DECLARE @vchText varchar(max) = 
 This is a string<>Test1<>Test2<>Test


DECLARE @positionofNextX INT = CHARINDEX('<>', @vchText)
DECLARE @nbrOFListItems INT = 1

WHILE @positionofNextX  != 0
BEGIN
    SET @NOTE = STUFF( @vchText, @positionofNextX, 4, CAST(@nbrOFListItems AS VARCHAR(1)) + '. ')

    SET @positionofNextX  = CHARINDEX('<>',  @vchText)

    --increment the list item number
    SET @nbrOFListItems = @nbrOFListItems + 1
END

print  @vchText

我从输出中得到了这个结果:这是一个列表:11.Test11.Test21Test3,我认为这是因为在1.Test11.Test21之间没有真正的空格。Test3@BS123-那么您的输入将如何。@BS123-对不起,我不知道HTML是如何工作的。如果您给我一个输入字符串,我将尝试为您获得预期的输出。
DECLARE @NOTE   VARCHAR(max) = 'This is a list: 1.Test1 1.Test2 1.Test3',
        @temp   VARCHAR(max),
        @output VARCHAR(max)

SELECT @temp = Substring(@NOTE, Charindex(':', @NOTE) + 2, Len(@note))

SELECT @output = LEFT(@NOTE, Charindex(':', @NOTE) + 1)

SELECT @output += CONVERT(VARCHAR(10), Row_number() OVER (ORDER BY col))
                  + Substring(col, Charindex('.', col), Len(col))
                  + ' '
FROM   (SELECT Split.a.value('.', 'VARCHAR(100)') col
        FROM   (SELECT Cast ('<M>' + Replace(@temp, ' ', '</M><M>') + '</M>' AS XML) AS Data) AS A
               CROSS APPLY Data.nodes ('/M') AS Split(a)) ou

SELECT @output -- This is a list: 1.Test1 2.Test2 3.Test3 
    DECLARE @vchText varchar(max) = 
 This is a string<>Test1<>Test2<>Test


DECLARE @positionofNextX INT = CHARINDEX('<>', @vchText)
DECLARE @nbrOFListItems INT = 1

WHILE @positionofNextX  != 0
BEGIN
    SET @NOTE = STUFF( @vchText, @positionofNextX, 4, CAST(@nbrOFListItems AS VARCHAR(1)) + '. ')

    SET @positionofNextX  = CHARINDEX('<>',  @vchText)

    --increment the list item number
    SET @nbrOFListItems = @nbrOFListItems + 1
END

print  @vchText