非字母数字字符如下-
@,!,#,&,(),?, /
没有内置函数可从MySQL中的字符串中删除非字母数字字符。因此,我们创建了一个删除所有非字母数字字符的函数。函数的声明和定义如下。
mysql> delimiter // mysql> CREATE FUNCTION RemoveNonAlphaNumeric( s CHAR(255) ) RETURNS CHAR(255) DETERMINISTIC -> BEGIN -> DECLARE var1, length SMALLINT DEFAULT 1; -> DECLARE result CHAR(255) DEFAULT ''; -> DECLARE ch CHAR(1); -> SET length = CHAR_LENGTH( s ); -> REPEAT -> BEGIN -> SET ch = MID( s, var1, 1 ); -> IF ch REGEXP '[[:alnum:]]' THEN -> SET result =CONCAT(result ,ch); -> END IF; -> SET var1 = var1 + 1; -> END; -> UNTIL var1 >length END REPEAT; -> RETURN result ; -> END //
名为“ RemoveNonAlphaNumeric”的函数从字符串中删除所有非字母数字字符。为了进行检查,我们现在将调用用户定义的函数。
mysql>delimiter ; mysql> select 'My Email id is test@123!',RemoveNonAlphaNumeric('My Email id is test@123!');
以下是使用功能“ RemoveNonAlphaNumeric”成功显示字母数字字符删除的输出。
+--------------------------+---------------------------------------------------+ | My Email id is test@123! | removeNonAlphaNumeric('My Email id is test@123!') | +--------------------------+---------------------------------------------------+ | My Email id is test@123! | MyEmailidistest123 | +--------------------------+---------------------------------------------------+ 1 row in set (0.15 sec)
在此字符串(MyEmailidistest123)中,没有@和!现在显示符号,表示该功能正常运行。