Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да премахнете всички неалфа-цифрови знаци от низ в MySQL?

Използване на MySQL 8.0 или по-нова версия

С любезното съдействие на отговора на michal.jakubeczy по-долу, замяната с Regex вече се поддържа от MySQL:

UPDATE {table} SET {column} = REGEXP_REPLACE({column}, '[^0-9a-zA-Z ]', '')

Използване на MySQL 5.7 или по-ниска версия

Regex не се поддържа тук. Трябваше да създам моя собствена функция, наречена alphanum, която премахна знаците вместо мен:

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                |
+---------------------+---------------------------------+
1 row in set (0.00 sec)

Ура!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да проверите състоянието на сървъра в MySQL Workbench с помощта на GUI

  2. Скрипт за проверка на състоянието на репликацията на MySQL

  3. Съпоставяне, чувствително към главни букви в MySQL

  4. Разбиране на изгледите в SQL

  5. Ръководство за проектиране на база данни за диспечера на задачите в MySQL