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