从表的特定字段中删除字符

k7fdbhmy  于 2021-06-20  发布在  Mysql
关注(0)|答案(2)|浏览(365)

我需要清理一个数据库,其中一列(total\ u area)的某些条目上有一些字符(不是全部)
比如5000㎡
我需要清理所有有此项的字段,以仅显示500
如何使用sql来实现它?我查看了trim,但找不到一种方法来选择所有在数字后面有一个字符的条目,并对其进行修剪
任何帮助都将不胜感激
谢谢

sulc1iza

sulc1iza1#

这很简单。mysql执行隐式转换,忽略数字后面的字符。所以,你可以做:

select (col * 1.0 / 10)

例如,这将返回500。

20jt8wwn

20jt8wwn2#

假设你想去掉所有不是数字的字符,你可以使用。 REGEXP_REPLACE ,例如。

create or replace table x(s string);

insert into x values
  ('111'),
  ('abc234xyz'),
  ('5000㎡'),
  ('9000㎡以上');

select s, regexp_replace(s, '[^\\d]*(\\d+)[^\\d]*', '\\1') from x;
-----------+--------------------------------------------------+
     S     | REGEXP_REPLACE(S, '[^\\D]*(\\D+)[^\\D]*', '\\1') |
-----------+--------------------------------------------------+
 111       | 111                                              |
 abc234xyz | 234                                              |
 5000㎡     | 5000                                             |
 9000㎡以上   | 9000                                             |
-----------+--------------------------------------------------+

我们要做的是匹配0个或更多的非数字字符序列,然后是1个或更多的数字字符,再匹配0个或更多的非数字字符,然后只生成中间序列。
请注意,您可以使用不同的regexp,具体取决于要保留/删除的字符。

相关问题