delimiter || DROP FUNCTION IF EXISTS strip_tags|| CREATE FUNCTION strip_tags( x longtext) RETURNS longtext LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA BEGIN DECLARE sstart INT UNSIGNED; DECLARE ends INT UNSIGNED; IF x IS NOT NULL THEN SET sstart = LOCATE('<', x, 1); REPEAT SET ends = LOCATE('>', x, sstart); SET x = CONCAT(SUBSTRING( x, 1 ,sstart -1) ,SUBSTRING(x, ends +1 )) ; SET sstart = LOCATE('<', x, 1); UNTIL sstart < 1 END REPEAT; END IF; return x; END; || delimiter ;
출처: https://webee.tistory.com/entry/Mysql-에서-HTML-태그-삭제-함수striptags [Red Roof Garage]
위의 코드로 strip_tags 라는 함수를 만들려고 하는데요.
그대로 복붙했을 때 좀 더 버전이 높은 mysql에서는 함수가 생성이 됐는데
cafe24에 설치된 mysql에 저대로 실행을 하면 오류가 뜹니다.
그런데 무슨 오류인지 설명은 뜨지않고 그저 오류라고만 뜨네요..ㅠㅠ
해결방법 알려주시면 정말 감사하겠습니다.
답변 1개 / 댓글 1개
웹호스팅 사용시 mysql 함수 생성 권한이 없는 경우가 대부분입니다
루트 권한이 있는 경우에 아래의 명령어를 입력하여 설정하셔야 합니다
SET GLOBAL log_bin_trust_function_creators = 1;
답변에 대한 댓글 1개
답변을 작성하려면 로그인이 필요합니다.
일단 웹호스팅mysql 에 관해서는 cafe24쪽에 문의해두었는데요...
SELECT strip_tags(wr_content) as stripped_text from g5_write_notice;
처럼 실행했더니
#1690 - BIGINT UNSIGNED value is out of range in '(sstart@1 - 1)'
라는 에러가 뜹니다. 혹시 방법을 아시나요??ㅠㅠ
SELECT strip_tags('<div style="font-size:12px">This is a body area</div>') as stripped_text;
위의 구문은 정상적으로 실행이 됩니다...