在Azure中,我试图删除表中列中<和>字符之间的任何文本
样本文本:
最好的部分是that. < br >Note:< br>< u>阅读:< /u>< span style=“字体-家庭:杯状,无衬线;字体大小:11 it;”>从小的道德故事只会帮助您的child.< /b>< br>< u>in学习重要:< /span>< span style=“字体-家庭;>生活课程,但它也有帮助,语言development.< /span>< ./span>。
输出:
最棒的是。阅读:从小的道德故事不仅帮助你的孩子学习重要的东西:生活的课程,而且它也有助于语言的发展。
我试着在下面查询它只对小评论文本起作用:
SELECT [Comments],REPLACE([Comments], SUBSTRING([Comments], CHARINDEX('<', [Comments]), CHARINDEX('>', [Comments]) - CHARINDEX('<', [Comments]) + 1),'') AS result
FROM table发布于 2022-10-18 05:53:12

SELECT [Comments],REPLACE([Comments], SUBSTRING([Comments], CHARINDEX('<', [Comments]), CHARINDEX('>', [Comments]) - CHARINDEX('<', [Comments]) + 1),'') AS result
FROM check_1CREATE 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
ENDselect [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,'')。
结果是一样的。
发布于 2022-10-18 06:20:18
根据替换的说法,Azure支持REGEXP_REPLACE。
这意味着应该可以将所有的'<...>'替换为''
select regexp_replace(comments, '<[^>]*>', '') from mytable;https://stackoverflow.com/questions/74099811
复制相似问题