> 데이터 베이스 > MySQL 튜토리얼 > MySQL 문자열에서 영숫자가 아닌 문자를 효율적으로 필터링하려면 어떻게 해야 합니까?

MySQL 문자열에서 영숫자가 아닌 문자를 효율적으로 필터링하려면 어떻게 해야 합니까?

DDD
풀어 주다: 2024-12-07 20:28:14
원래의
280명이 탐색했습니다.

How Can I Efficiently Filter Non-Alphanumeric Characters from MySQL Strings?

MySQL 문자열의 효율적인 문자 필터링

효율성을 위해 문자열을 비교할 때는 영숫자가 아닌 문자를 제거하는 것이 중요합니다. 여러 REPLACE 함수를 사용하는 대신 대체 솔루션을 사용하는 것이 좋습니다.

MySQL 8.0 이상

MySQL 8.0은 정규식 대체를 지원하므로 영숫자가 아닌 문자를 다음으로 바꿀 수 있습니다. 빈 문자열:

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^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!');
로그인 후 복사

출력:

+---------------------+---------------------------------+
| This works finally! | alphanum('This works finally!') |
+---------------------+---------------------------------+
| This works finally! | Thisworksfinally                |
+---------------------+---------------------------------+
로그인 후 복사

위 내용은 MySQL 문자열에서 영숫자가 아닌 문자를 효율적으로 필터링하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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