替换Azure sql中2个字符之间的多个值

mlnl4t2r  于 2022-11-17  发布在  其他
关注(0)|答案(2)|浏览(159)

在Azure SQL中,我正在尝试删除表中列的<>字符之间的任何文本
范例文字:
最棒的是< br >注意事项:< br >< u>阅读:< /u>< span style="font-family: calibri,sans-serif; font-size: 11pt;">从小讲道德故事< b>不仅对孩子有帮助。< /b>< br>< u>在学习中重要的是:生活< /u>< /span>< span style="font-family: calibri; ">经验,但也有助于语言发展。< /span>〈./span〉
输出量:
最好的部分是。阅读:从小讲道德故事不仅能帮助孩子学习重要的东西:而且还有助于语言的发展。
我试着在下面查询它的工作只为小评论文本:

SELECT [Comments],REPLACE([Comments], SUBSTRING([Comments], CHARINDEX('<', [Comments]), CHARINDEX('>', [Comments]) - CHARINDEX('<', [Comments]) + 1),'') AS result
FROM table
yacmzcpb

yacmzcpb1#

  • 我已经获取了名为check_1输入表,并将示例数据插入该表。

  • 此查询仅删除第一个出现的模式。
SELECT [Comments],REPLACE([Comments], SUBSTRING([Comments], CHARINDEX('<', [Comments]), CHARINDEX('>', [Comments]) - CHARINDEX('<', [Comments]) + 1),'') AS result
FROM check_1
  • 为了删除文本中所有以'〈'开头并以'〉'结尾的字符串模式,创建了一个带有while循环的用户定义函数。

第一次

输出字符串:最好的部分是。注意:阅读:从小读道德故事不仅有助于你child.in重要的是:生活的教训,但它也有助于语言的发展。
您也可以使用Stuff [Refer Microsoft document on STUFF ]来取代replace+substring函数。请以使用者定义函数中的SET @input_text = STUFF(@input_text,@pos_1,@Length,'')行来取代此行SET @input_text = replace(@input_text,substring(@input_text,@pos_1,@Length),'')
结果相同。

j2cgzkjk

j2cgzkjk2#

根据https://learn.microsoft.com/../azure/../regexp_replace,Azure支持REGEXP_REPLACE
这意味着应该可以通过''替换所有'<...>'

select regexp_replace(comments, '<[^>]*>', '') from mytable;

相关问题