首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >替换azure sql中两个字符之间的多个值

替换azure sql中两个字符之间的多个值
EN

Stack Overflow用户
提问于 2022-10-17 15:43:24
回答 2查看 72关注 0票数 0

在Azure中,我试图删除表中列中<>字符之间的任何文本

样本文本:

最好的部分是that. < br >Note:< br>< u>阅读:< /u>< span style=“字体-家庭:杯状,无衬线;字体大小:11 it;”>从小的道德故事只会帮助您的child.< /b>< br>< u>in学习重要:< /span>< span style=“字体-家庭;>生活课程,但它也有帮助,语言development.< /span>< ./span>。

输出:

最棒的是。阅读:从小的道德故事不仅帮助你的孩子学习重要的东西:生活的课程,而且它也有助于语言的发展。

我试着在下面查询它只对小评论文本起作用:

代码语言:javascript
复制
SELECT [Comments],REPLACE([Comments], SUBSTRING([Comments], CHARINDEX('<', [Comments]), CHARINDEX('>', [Comments]) - CHARINDEX('<', [Comments]) + 1),'') AS result
FROM table
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-18 05:53:12

  • 我使用了名为check_1的输入表,并将示例数据插入到该表中。

  • 此查询仅删除第一个正在发生的模式。
代码语言:javascript
复制
SELECT [Comments],REPLACE([Comments], SUBSTRING([Comments], CHARINDEX('<', [Comments]), CHARINDEX('>', [Comments]) - CHARINDEX('<', [Comments]) + 1),'') AS result
FROM check_1
  • 为了删除文本中以'<‘和'>’>结尾的所有字符串模式,创建了一个用户定义的带while循环的函数。
代码语言:javascript
复制
CREATE  FUNCTION [dbo].[udf_removetags] (@input_text VARCHAR(MAX)) RETURNS  VARCHAR(MAX)
AS
BEGIN
DECLARE @pos_1 INT
DECLARE @pos_n INT
DECLARE @Length INT
SET @pos_1 =  CHARINDEX('<',@input_text)
SET @pos_n =  CHARINDEX('>',@input_text,CHARINDEX('<',@input_text))
SET @Length = (@pos_n - @pos_1) +  1

WHILE @pos_1 >  0  AND @pos_n >  0  AND @Length >  0
BEGIN
SET @input_text =  replace(@input_text,substring(@input_text,@pos_1,@Length),'')
SET @pos_1 =  CHARINDEX('<',@input_text)
SET @pos_n =  CHARINDEX('>',@input_text,CHARINDEX('<',@input_text))
SET @Length = (@pos_n - @pos_1) +  1
END

RETURN  @input_text
END
代码语言:javascript
复制
select [dbo].[udf_removetags](comments) as result from check_1

输出字符串:最好的部分是。注:阅读:早期的道德故事不仅有助于你的child.in学习:生活的教训,但它也有帮助,在语言发展。

您还可以使用一些东西(参考料子上的Microsoft )来代替replace+substring函数。将此SET @input_text = replace(@input_text,substring(@input_text,@pos_1,@Length),'')行替换为用户定义函数中的行SET @input_text = STUFF(@input_text,@pos_1,@Length,'')

结果是一样的。

票数 0
EN

Stack Overflow用户

发布于 2022-10-18 06:20:18

根据替换的说法,Azure支持REGEXP_REPLACE

这意味着应该可以将所有的'<...>'替换为''

代码语言:javascript
复制
select regexp_replace(comments, '<[^>]*>', '') from mytable;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74099811

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档