Mysql只提取字母字符

标签 mysql character extract alphabetical

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

取5行:

  • S123J90
  • SF91K88
  • JK12K99
  • X129PL9
  • ABCD123

我需要这 5 行中的以下数据

  • S
  • 顺丰
  • 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

注意:我已经为这个答案重新编码了函数,所以语法可能不对。

最佳答案

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

一旦它到达字符串的末尾或命中一个数字就退出。

关于Mysql只提取字母字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10940687/

相关文章:

r - 为什么我不能使用 tidyr extract 和 regex 拆分此列?

从给定字符串中提取 url 的 C# 正则表达式模式 - 不是完整的 html url,而是裸链接

php - 主键基于另一个键递增

mysql - sql 触发器在变量中存储列名并将其用于 sql 触发器中的 OLD.myvar 时出现错误

c - 为什么 getchar() 在这两种情况下的工作方式不同?

Python 循环 - 帮助我理解

mysql - 从列中提取数据并用它来更新另一列

php - Unity和MySQL无法注册很多中文

mysql - 重复的列值 MySQL

C - 如何检查不需要的字符是否在数组中?