본문 바로가기
개발

MySQL에서 태그를 제거하고 내용 가져오는 방법

by 농담곰이 2023. 5. 2.
반응형

MySQL에서 HTML 태그를 제거하고 내용만 가져오려면 `REPLACE`와 `REGEXP_REPLACE` 함수를 사용할 수 있습니다. 그러나 `REGEXP_REPLACE` 함수는 MySQL 8.0 이상에서만 사용할 수 있습니다.

**MySQL 8.0 이상: REGEXP_REPLACE 사용**

MySQL 8.0 이상에서는 `REGEXP_REPLACE` 함수를 사용하여 HTML 태그를 제거할 수 있습니다. 예를 들어, `content`라는 열에 저장된 HTML을 제거하려면 다음과 같이 쿼리를 작성할 수 있습니다.

```sql
SELECT REGEXP_REPLACE(content, '<[^>]+>', '') AS stripped_content
FROM your_table;
```


이 쿼리에서는 정규 표현식 '<[^>]+>'를 사용하여 HTML 태그를 찾고, 빈 문자열('')로 대체하여 제거합니다.

**MySQL 8.0 미만: REPLACE와 사용자 정의 함수 사용**

MySQL 8.0 미만에서는 `REGEXP_REPLACE` 함수를 사용할 수 없으므로, 사용자 정의 함수를 만들어 HTML 태그를 제거할 수 있습니다. 다음은 HTML 태그를 제거하는 사용자 정의 함수를 만드는 예입니다.

```sql
DELIMITER $$

CREATE FUNCTION strip_tags(html TEXT) RETURNS TEXT
BEGIN
    DECLARE start INT, end INT;

    SET start = LOCATE('<', html);
    WHILE start > 0 DO
        SET end = LOCATE('>', html, start);
        IF end > 0 THEN
            SET html = CONCAT(SUBSTRING(html, 1, start - 1), SUBSTRING(html, end + 1));
        END IF;
        SET start = LOCATE('<', html);
    END WHILE;

    RETURN html;
END $$

DELIMITER ;
```

이제 사용자 정의 함수 `strip_tags`를 사용하여 HTML 태그를 제거하고 내용만 가져올 수 있습니다.

```sql
SELECT strip_tags(content) AS stripped_content
FROM your_table;
```

위의 쿼리를 실행하면 `content` 열의 HTML 태그가 제거되고, `stripped_content` 열에 순수한 텍스트만 표시됩니다.

반응형

댓글