我有一列包含字母和数字的混合。我需要从列中获取第一组字母字符。一旦遇到整数,我就不再想要了..例如:
取 5 行:
- S123J90
- SF91K88
- JK12K99
- X129PL9
- ABCD123
我需要这 5 行中的以下数据
- 小号
- 顺丰
- JK
- X
- A B C D
我发现很多关于嵌套 REPLACE 查询的讨论,但我确定那里有更好的选择吗?
注意:所有行至少以一个字母字符开头
更新:我使用了这个函数的修改http://www.rummandba.com/2011/02/mysql-function-to-remove-non.html如下
DROP FUNCTION IF EXISTS remove_non_alpha_char_f //
CREATE FUNCTION remove_non_alpha_char_f (prm_strInput varchar(255))
RETURNS VARCHAR(255)
DETERMINISTIC
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE v_char VARCHAR(1);
DECLARE v_parseStr VARCHAR(255) DEFAULT ' ';
WHILE (i <= LENGTH(prm_strInput) ) DO
SET v_char = SUBSTR(prm_strInput,i,1);
IF v_char REGEXP '^[A-Za-z ]+$' THEN #alpha
SET v_parseStr = CONCAT(v_parseStr,v_char);
SET i = i + 1;
ELSE
SET i=256;
END IF;
END WHILE;
RETURN trim(v_parseStr);
END
注意:我已经为这个答案重新编码了函数,所以语法可能已经失效。