Mysql只提取字母字符

时间:2012-06-07 22:23:54

标签: mysql character extract alphabetical

我有一个包含字母和数字混合的列。我需要从列中获取第一组字母字符。一旦遇到整数,我就不再需要了......例如:

取5行:

  • S123J90
  • SF91K88
  • JK12K99
  • X129PL9
  • ABCD123

我需要来自这5行的以下数据

  • S
  • SF
  • JK
  • X
  • ABCD

我发现很多关于嵌套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

注意:我已经为此答案重新编写了函数,因此语法可能已经用完了。

2 个答案:

答案 0 :(得分:1)

您可以使用SUBSTRING(),LENGTH()创建递归函数,该函数检查每个字符是否按字母顺序排列,然后将其添加到结果中。

一旦到达字符串末尾或点击数字就退出。

答案 1 :(得分:0)

对于每一行,请尝试以下操作:

$split = preg_split("/\d/", $your_str);

您希望数组$split[0]中的$split

注意这是PHP - @Pablo是正确的,你真的需要MySQL为你做这个吗?