如何从SQL中的表列的字符串中获取某些文本 [英] How to get certain text from a string of a table column in SQL
本文介绍了如何从SQL中的表列的字符串中获取某些文本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
大家好,
我在表格中有一个列,其值为'text< head>记录1,记录2< / head> 。 HTML标签'。
我想要的是< head>之间的字符串部分< /头>标签。
表示结果应该是记录1,记录2.
谢谢和问候
Mohammad Wasif
Hi All,
I have a column in a table Inforamtion having value as 'text <head>record 1, record 2 </head> . HTML tag'.
What I want is that the string portion between <head> </head> tag.
means result should be record 1, record 2.
Thanks & Regards
Mohammad Wasif
推荐答案
Create Proc StripHTML (@HTMLText VARCHAR(MAX))
as
BEGIN
DECLARE @Start INT
DECLARE @End INT
DECLARE @Length INT
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
WHILE @Start > 0 AND @End > 0 AND @Length > 0
BEGIN
SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'')
SET @Start = CHARINDEX('<',@HTMLText)
SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText))
SET @Length = (@End - @Start) + 1
END
Select LTRIM(RTRIM(@HTMLText))
END
-- StripHTML '<head><body><form>record 1, record 2 </form></body></head>'
你可以这样做 - 但它可能更好地在您的演示文稿软件中完成,或者以您想要的格式存储信息,因为SQL字符串处理设施是...嗯...基本。
You can do it - but it's probably better done in your presentation software, or by storing the info in the format you want, because SQL string handling facilities are...um...basic.
SELECT SUBSTRING(
SUBSTRING(text, 0, PATINDEX('%</head>%', text)),
PATINDEX('%<head>%', text) + 6,
32000)
FROM MyTable
看看我的意思?
See what I mean?
declare @xml xml;
declare @val varchar(500) = '<head>record1,record2</head>';
set @xml = CONVERT(xml,@val);
select tab.col.value('head[1]','varchar(20)') vallue from @xml.nodes('/') tab(col);
这篇关于如何从SQL中的表列的字符串中获取某些文本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文