我需要从 SELECT 查询中的名称字段中删除数字。这些数字可能位于字符串的末尾。示例如下:
Some Name
Namewithnospace
NamewithInt 100 <--- I want to remove this int from the string
我不能保证字符串的第一部分不包含空格,尽管我可以相当确定该数字将是字符串的最后一部分。此外,大多数数据不会有空格。
我可以看到必须有一个解决方案REVERSE()
,SUBSTRING()
但无法弄清楚如何不破坏没有空格或有空格但没有整数的数据。
编辑:下面是 Ollie 向我指出的 MySQL C 函数的定义,我对正则表达式进行了更改(在函数的输出中包含空格和标点符号):
DELIMITER !
DROP FUNCTION IF EXISTS alphas!
CREATE FUNCTION alphas ( str VARCHAR(255) )
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i, len SMALLINT DEFAULT 1;
DECLARE ret VARCHAR(255) DEFAULT '';
DECLARE c VARCHAR(1);
SET len = CHAR_LENGTH( str );
REPEAT
BEGIN
SET c = MID( str, i, 1 );
IF c REGEXP '[[:alpha:]]' OR c REGEXP '[[:space:]]' THEN
SET ret=CONCAT(ret,c);
END IF;
SET i = i + 1;
END;
UNTIL i > len END REPEAT;
RETURN ret;
END !
DELIMITER ;