MySQL의 문자열에서 영숫자가 아닌 문자를 효율적으로 제거
MySQL에서 문자열 비교는 성능 집약적인 작업일 수 있습니다. 효율성을 최적화하려면 비교를 수행하기 전에 영숫자가 아닌 문자를 제거하는 것이 유용한 경우가 많습니다. 정규 표현식 기능을 활용하고 사용자 정의 함수를 생성하는 것을 포함하여 이를 달성하기 위한 다양한 접근 방식을 살펴보겠습니다.
MySQL 8.0 이상: Regex 활용
MySQL 8.0 이상 버전에서는 영숫자가 아닌 문자를 대체하기 위해 regex(정규 표현식)를 사용할 수 있습니다. 다음 SQL 문은 이 접근 방식을 보여줍니다.
UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zÀ-ÿ ]', '')
이 문에서 정규식 [^0-9a-zÀ-ÿ ]는 숫자, 문자, 공백 또는 악센트 문자가 아닌 모든 문자와 일치합니다.
MySQL 5.7 이하: 사용자 정의 생성 기능
MySQL 이전 버전(5.7 이하)에서는 정규식 기능을 사용할 수 없습니다. 대안으로 영숫자가 아닌 문자를 제거하는 사용자 정의 함수를 생성할 수 있습니다. 구현 예는 다음과 같습니다.
DROP FUNCTION IF EXISTS alphanum; DELIMITER | CREATE FUNCTION alphanum(str CHAR(255)) RETURNS CHAR(255) DETERMINISTIC BEGIN DECLARE i, len SMALLINT DEFAULT 1; DECLARE ret CHAR(255) DEFAULT ''; DECLARE c CHAR(1); IF str IS NOT NULL THEN SET len = CHAR_LENGTH(str); REPEAT BEGIN SET c = MID(str, i, 1); IF c REGEXP '[[:alnum:]]' THEN SET ret=CONCAT(ret,c); END IF; SET i = i + 1; END; UNTIL i > len END REPEAT; ELSE SET ret=''; END IF; RETURN ret; END | DELIMITER ;
생성되면 아래와 같이 이 함수를 사용하여 영숫자가 아닌 문자를 제거할 수 있습니다.
select 'This works finally!', alphanum('This works finally!');
위 내용은 MySQL의 문자열에서 영숫자가 아닌 문자를 효율적으로 제거하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!