钮钴禄小懒子 发表于 2024-2-21 10:29:40

【9.0.102.0】请问服务端命令如何去除字符串中的英文字母,仅保留数字

请问服务端命令如何去除字符串中的英文字母,如下图数据

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



Simon.Sun 发表于 2024-2-21 10:29:41

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



钮钴禄小懒子 发表于 2024-2-21 14:19:35

Simon.Sun 发表于 2024-2-21 13:41
您好,这个您可以考虑使用正则匹配去处理,如下:

追问一下,由于我在服务端命令循环内使用正则表达式,当数据量比较多时,速率就下降了,请问有没有方法使用公式字段先处理呢?在服务端命令使用的时候我直接查出来即可。

Simon.Sun 发表于 2024-2-21 16:32:55

本帖最后由 Simon.Sun 于 2024-2-21 17:23 编辑

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

钮钴禄小懒子 发表于 2024-2-21 17:58:47

Simon.Sun 发表于 2024-2-21 16:32
效率问题主要是循环去更新表,如果能做到批量更新,效率就高很多。公式的话还做不到正则提取字符串。
可以 ...

我刚查了下,regexp_substr()函数是MySQL8.0才支持的,我目前的版本是5.7,那还有没有什么方法实现呢?

Simon.Sun 发表于 2024-2-22 11:02:20

这样的话,看能不能这样去做。
我看 demo 里的编码字段,字母都是在第一个,一共位数都是 4,3 个字符的全都是数字,如果规则是这样的话,可以考虑用下面公式字段去处理。

钮钴禄小懒子 发表于 2024-2-22 14:04:54

Simon.Sun 发表于 2024-2-22 11:02
这样的话,看能不能这样去做。
我看 demo 里的编码字段,字母都是在第一个,一共位数都是 4,3 个字符的全 ...

有的字母是两个:'(,这样子还是没有办法直接取出数字

Simon.Sun 发表于 2024-2-22 15:48:49

如果编码规则能够找到规律的话,可以尝试用公式字段去处理。规则不固定的话,可以考虑循环去处理好,写到表里。
MySQL 5.7 的话,在网上找到了下面方案,需要写自定义函数去处理,您也可以参考一下。
sql - How to get only Digits from String in mysql? - Stack Overflow

VVANVI 发表于 2024-2-22 16:23:00

嫌升级数据库麻烦,可以再页面写js 正则来处理

Tony.Fu 发表于 2024-2-22 17:26:25

我想到的方式也是 定期通过服务端命令循环, 或者sql语句来处理了(sql语句需要注意一下数据库支持的函数和语法)
页: [1] 2
查看完整版本: 【9.0.102.0】请问服务端命令如何去除字符串中的英文字母,仅保留数字