본문 바로가기

Developer Diary/SQL & DB

HTML 태그를 파싱해서 SELECT

A_TBL이라는 테이블이 있습니다. 이 테이블에는 con, con2, ... 등의 컬럼이 있는데, 그 중 con이라는 컬럼 안에는 '<table><tr><td><font>...</table>'처럼 HTML 태그가 들어 있습니다. 컬럼의 HTML 태그만 제외하고 SELECT 되도록 udf_StripHTML 사용자 함수를 생성해 보겠습니다.

CREATE FUNCTION
[dbo].[udf_StripHTML]
(@HTMLText VARCHAR(MAX))
RETURNS 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
RETURN
LTRIM(RTRIM(@HTMLText))
END
GO

사용예제: html 파싱이 필요한 컬럼을 udf_StripHTML(...) 괄호 안에 기입

select writeid, writernm, deptnm, canm, title,
dbo.udf_StripHTML(con), dbo.udf_StripHTML(con2),
dbo.udf_StripHTML(pre), dbo.udf_StripHTML(mid),
dbo.udf_StripHTML(res), dbo.udf_StripHTML(self1),
dbo.udf_StripHTML(self2), pointssum, workdate
from A_TBL order by workdate asc

→ HTML 코드만 쏙 빠진 채 오리지널 데이터만 SELECT 될 것입니다.
SQL 2000 버전에서는 사용 불가. 2005, 2008 버전에서만 사용 가능.