mysql의 내 열에서 인쇄 할 수없는 모든 문자를 제거하고 싶습니다. 이게 regexp_replace() 함수를 사용하여 달성 할 수 있다고 생각하지만 어떻게 알지는 못합니다. 인쇄 할 수없는 문자는 o에서 31까지의 Ascii 값을가집니다. 다음과 같은 해결책을 생각해보십시오 : 입력 문자열의 모든 문자를 하나씩 읽고 ASCII로 변환하는 함수를 작성합니다. 그런 다음 매번이 Ascii 값을 입력 ascii 값과 비교하고 일치하면 대체하고 함수는 대체 문자열을 반환합니다. 그러나 내 응용 프로그램 데이터에서는 항상 대량으로 처리되므로 선택 쿼리와 사용자 정의 함수를 사용하더라도 많은 시간이 소요될 것이라고 생각합니다. 그래서이 작업을 수행하는 다른 방법이 필요합니다. 나는 REGEXP_REPLACE()가이 좋을 것이라고 생각하지만 난 정규식은 기본적으로 만 검색 작업을 대체 지원하지 않습니다 Ronakmysql의 열에서 ALL 또는 특정 인쇄 할 수없는 문자 제거
2
A
답변
3
DROP function IF EXISTS mysql_replaceallnonprintablecharacters;
CREATE function mysql_replaceallnonprintablecharacters (data VARCHAR(1024))
returns VARCHAR(1024)
begin
DECLARE i INT DEFAULT 0;
DECLARE finaldata VARCHAR(1024) DEFAULT '';
SET FINALDATA:=data;
WHILE i < 31 do
SET FINALDATA:=REPLACE(finaldata, CHAR(i), '');
SET i := i+1;
end WHILE;
RETURN finaldata;
end
0
MySQL의 감사가
도와주세요 사용 방법 잘 모릅니다.
즉, 사용자 정의 함수로 Oracle의 REGEXP_REPLACE()와 같은 일부 기능을 제공하는 packages이 있습니다.
일반 표현식 [[:cntrl:]]+
은 하나 이상의 인쇄 할 수없는 문자 (ASCII 0-31 및 ASCII 127)와 일치합니다.
위의 패키지를 사용하면 REGEXP_REPLACE?(text, "[[:cntrl:]]+", "")
은 인쇄 할 수없는 모든 문자를 제거하여 text
을 수정합니다.
+0
@RonakShah : 가장 적합한 솔루션 인 경우 답변으로 게시하고 싶을 수 있습니다. 당신은 당신 자신의 대답도 받아 들일 수 있습니다. 당신은 단지 자신의 게시물을 upvote 수 없습니다, 다른 사람들의 upvote. –
가능한 복제본 [MySQL에서 정규 표현식을 바꾸는 방법?] (http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in- mysql) – DhruvPathak
가능한 [테이블에서 인쇄 할 수없는 문자를 검색하고 바꿀 수있는 방법?] (http://stackoverflow.com/questions/11243541/how-to-detect-and-replace-non-printable-characters-from) -table) – outis