微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从列中提取字母和数字部分

如何解决从列中提取字母和数字部分

是的:

SELECT
  @col:=col1 AS col, 
  @num:=REVERSE(CAST(REVERSE(@col) AS UNSIGNED)) AS num,
  SUBSTRING_INDEX(@col, @num, 1) AS word
FROM
  tab1

-仅在您的列中包含字母然后是数字(如您所述)时才有效。这就是为什么REVERSE()需要加倍(否则CAST()将无效)的原因。检查这个演示

解决方法

我有一个表tab1,该表的列col1具有复合的alpha-then-numeric值,如下所示:

abc123
xy45
def6
z9

我需要在查询中将值提取为单独的列,而数字部分在整数数据类型的列中。

如果两个值的开始位置和结束位置一致,则可以使用来完成工作substring(),因为您可以看到数字部分的开始位置有所不同。

是否有一种优雅的方法可以解决此问题,还是必须通过使用正则表达式匹配来分隔个案或在大量的个案语句中汇总使用每个可能的起点的一系列并集来完成?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。