我想使用regex\u replace将数字后的数据替换为"".

例如:

input --> output
MA0244891-D --> MA0244891
MA0244891 --> MA0244891
MA0244891D --> MA0244891
0244891D --> 0244891

我try 了以下几种正则表达式替换:

REGEXP_REPLACE(rk.mystring, '[^0-9]+', '')) --> only get numbers
REGEXP_REPLACE(rk.mystring, '[^a-zA-Z0-9]+', '')) ---> get alphanumeric including the last characters
REGEXP_REPLACE(rk.mystring, '[^a-zA-Z][^0-9]+', '')) ---> almost correct but truncate numbers at the back

谢谢你的帮助

推荐答案

您可以删除字符串中的任何非字母数字和字符串末尾的任何字母:

REGEXP_REPLACE(rk.mystring, '[^0-9A-Za-z]|[a-zA-Z]+$', '')

参见regex demo.

Details:

  • [^0-9A-Za-z]-ASCII数字和字母以外的任何字符
  • |-或
  • [a-zA-Z]+$-字符串末尾的一个或多个ASCII字母.

Mysql相关问答推荐

根据键的数量,SQL Json字段分为行

如何让Docker MySQL使用Unicode(utf-8)和初始化脚本?

客户跨订阅的跨时间线计数

在MySQL CLI中,是否有自动完成过程的方法?

从MySQL JSON列中检索数组中的所有答案

使用不同的 where 列进行子 Select

使用 presto 或 mysql 添加每个组中的缺失值

发生的原因及解决方法

Mysql - 按周分组但从 1 开始计数

带有 JOIN 和 WHERE 子句的 INSERT 语句

Mysql根据文本语言或行数将列拆分为多列

如何在 Shopware 6 DAL 中实施 Haversine 公式?

Mysql如何分行分词

获取 TEXT 类型行的百分比

在分组结果 MySQL 5.7 版中获取最多的重复值

MySQL IF() 函数根据指定条件执行代码块

在 MySQL 中使用三个表进行计算

如何在 Windows 上访问 xampp 的命令行

使用 Java 通过 SSH 连接到远程 MySQL 数据库

MySQL 更新连接表