mysql 컬럼 특정 태그 사이만 변경 채택완료
안녕하세요.
mysql에서
test라는 테이블 안에 free 라는 컬럼이 있습니다.
free 컬럼 내용에서 특정 태그 <div>와 </div> 사이의 모든 문자를 원하는 문자열로 업데이트 하려고 합니다.
---------------------------------------------
테스트 입니다. 테스트 입니다.
<div>안녕하세요. <b>안녕하세요</b>안녕하세요. 안녕하세요.</div>
테스트 입니다.테스트 입니다.
--------------------------------
아래와 같은 결과를 얻고 싶은데요.
테스트 입니다. 테스트 입니다.
<div>변경 되었습니다.</div>
테스트 입니다.테스트 입니다.
답변 2개
-- 테이블 생성
CREATE TABLE `item` (
`itemno` int(11) NOT NULL,
`itemname` text
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- 데이터 생성
INSERT INTO `item` VALUES
( 1, '장갑')
,( 2, '모자')
,( 3, '토시')
,( 4, '신발')
,( 5, '안경')
,( 6, '안녕하세요. 안녕하세요안녕하세요. 안녕하세요.')
,( 7, '안녕하세요안녕하세요. 안녕하세요.')
,( 8, '안녕하세요안녕하세요. 안녕하세요.')
,( 9, '안녕하세요. 안녕하세요.')
,(10, '안녕하세요.')
,(11, '안녕하세요.')
,(12, '안녕하세요.안녕하세요.')
,(13, 'abc안녕하세요.안녕하세요.def')
,(14, 'ㄱ안녕하세요.안녕하세요.쀍')
,(15, '12345');
SELECT * FROM item;
/*
+--------+-------------------------------------------------------------------------------------+
| itemno | itemname |
+--------+-------------------------------------------------------------------------------------+
| 1 | 장갑 |
| 2 | 모자 |
| 3 | 토시 |
| 4 | 신발 |
| 5 | 안경 |
| 6 | 안녕하세요. 안녕하세요안녕하세요. 안녕하세요. |
| 7 | 안녕하세요안녕하세요. 안녕하세요. |
| 8 | 안녕하세요안녕하세요. 안녕하세요. |
| 9 | 안녕하세요. 안녕하세요. |
| 10 | 안녕하세요. |
| 11 | 안녕하세요. |
| 12 | 안녕하세요.안녕하세요. |
| 13 | abc안녕하세요.안녕하세요.def |
| 14 | ㄱ안녕하세요.안녕하세요.쀍 |
| 15 | 12345 |
+--------+-------------------------------------------------------------------------------------+
15 rows in set (0.00 sec)
*/
-- 데이터 확인
SELECT *,
INSTR(itemname, '') c_begin
,INSTR(REVERSE(itemname), '>vid/vid/
-- 업데이트
START TRANSACTION;
UPDATE item SET
itemname = CONCAT(
SUBSTR(itemname, 1, INSTR(itemname, '') - 1) -- c_head
,'변경 되었습니다.'
,SUBSTR(itemname, 0 - INSTR(REVERSE(itemname), '>vid/
답변에 대한 댓글 2개
이 구문은 SQL 의 한줄주석 입니다.
쿼리문이 개행문자를 포함하지 않을때는 /* c_head */ 처럼 사용해야 하거나 아예 빼버리는게 낫습니다.
댓글을 작성하려면 로그인이 필요합니다.
정규식이용해서 한번 테스트해봤는데요
응용해서 사용해보시면 되지 않으까 합니다.
SELECT REGEXP_REPLACE(itemname, '<div>.+</div>$', '<div>변경 되었습니다.</div>') FROM `item`;
UPDATE item SET itemname = REGEXP_REPLACE(itemname, '<div>.+</div>$', '<div>변경 되었습니다.</div>');
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
아래처럼 해봤는데 업데이트가 안되네요. 어디가 문제일까요?;;
$sql = " UPDATE name SET post = CONCAT(SUBSTR(post, 1, INSTR(post, '<div>') - 1) -- c_head ,'<div>변경 되었습니다.</div>' ,SUBSTR(post, 0 - INSTR(REVERSE(post), '>vid/<') + 1) -- c_tail) WHERE post REGEXP '<div>.+</div>' ID = '734' ";