如何从SQL中的表列的字符串中获取某些文本 [英] How to get certain text from a string of a table column in SQL

查看:204
本文介绍了如何从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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆