> 데이터 베이스 > MySQL 튜토리얼 > MySQL의 문자열에서 영숫자가 아닌 문자를 효율적으로 제거하는 방법은 무엇입니까?

MySQL의 문자열에서 영숫자가 아닌 문자를 효율적으로 제거하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-12-01 14:18:13
원래의
652명이 탐색했습니다.

How to Efficiently Remove Non-Alphanumeric Characters from Strings in MySQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿