找回密码
 立即注册

QQ登录

只需一步,快速开始

钮钴禄小懒子 悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2024-2-21 10:29  /   查看:2177  /  回复:11
1金币
请问服务端命令如何去除字符串中的英文字母,如下图数据

能否通过服务端命令返回去除字母后的字符串,如下图



附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,这个您可以考虑使用正则匹配去处理,如下:

11 个回复

倒序浏览
最佳答案
最佳答案
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-2-21 10:29:41
来自 2#
您好,这个您可以考虑使用正则匹配去处理,如下:



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
钮钴禄小懒子悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2024-2-21 14:19:35
3#
Simon.Sun 发表于 2024-2-21 13:41
您好,这个您可以考虑使用正则匹配去处理,如下:

追问一下,由于我在服务端命令循环内使用正则表达式,当数据量比较多时,速率就下降了,请问有没有方法使用公式字段先处理呢?在服务端命令使用的时候我直接查出来即可。
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-2-21 16:32:55
4#
本帖最后由 Simon.Sun 于 2024-2-21 17:23 编辑

效率问题主要是循环去更新表,如果能做到批量更新,效率就高很多。公式的话还做不到正则提取字符串。
可以考虑看看用外联库的一些函数去处理,如果是 MySQL,可以用下面 SQL 用执行 SQL 命令做批量更新:
UPDATE `表2` SET `文本2` = regexp_substr(`文本`, '[0-9]+', 1, 1);

MySQL 正则表达式:regexp_substr 函数 | MySQL 技术论坛 (learnku.com)
回复 使用道具 举报
钮钴禄小懒子悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2024-2-21 17:58:47
5#
Simon.Sun 发表于 2024-2-21 16:32
效率问题主要是循环去更新表,如果能做到批量更新,效率就高很多。公式的话还做不到正则提取字符串。
可以 ...

我刚查了下,regexp_substr()函数是MySQL8.0才支持的,我目前的版本是5.7,那还有没有什么方法实现呢?
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-2-22 11:02:20
6#
这样的话,看能不能这样去做。
我看 demo 里的编码字段,字母都是在第一个,一共位数都是 4,3 个字符的全都是数字,如果规则是这样的话,可以考虑用下面公式字段去处理。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
钮钴禄小懒子悬赏达人认证 活字格认证
金牌服务用户   /  发表于:2024-2-22 14:04:54
7#
Simon.Sun 发表于 2024-2-22 11:02
这样的话,看能不能这样去做。
我看 demo 里的编码字段,字母都是在第一个,一共位数都是 4,3 个字符的全 ...

有的字母是两个,这样子还是没有办法直接取出数字
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:2024-2-22 15:48:49
8#
如果编码规则能够找到规律的话,可以尝试用公式字段去处理。规则不固定的话,可以考虑循环去处理好,写到表里。
MySQL 5.7 的话,在网上找到了下面方案,需要写自定义函数去处理,您也可以参考一下。
sql - How to get only Digits from String in mysql? - Stack Overflow
回复 使用道具 举报
VVANVI悬赏达人认证
论坛元老   /  发表于:2024-2-22 16:23:00
9#
嫌升级数据库麻烦,可以再页面写js 正则来处理

评分

参与人数 1金币 +6 收起 理由
Tony.Fu + 6 乐于助人

查看全部评分

回复 使用道具 举报
Tony.Fu活字格认证 Wyn认证
超级版主   /  发表于:2024-2-22 17:26:25
10#
我想到的方式也是 定期通过服务端命令循环, 或者sql语句来处理了(sql语句需要注意一下数据库支持的函数和语法)
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部