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

时间:2018-08-20 02:13:16

标签: mysql sql snowflake

我需要清理一个数据库,其中某列(TOTAL_AREA)的某些条目上有一些字符(不是全部)

约5000㎡

我需要清除所有具有该条目的字段,以仅显示500

我该如何使用SQL?我查看了TRIM,但找不到一种方法来选择所有在数字后带有字符的条目,然后对其进行TRIM

任何帮助将不胜感激

谢谢

2 个答案:

答案 0 :(得分:0)

这很容易。 MySQL进行隐式转换,忽略数字后的字符。因此,您可以这样做:

select (col * 1.0 / 10)

对于您的示例,这将返回500。

答案 1 :(得分:0)

假设您想摆脱所有非数字字符,可以使用例如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个或多个非数字字符的序列,只产生中间序列

请注意,您可以使用不同的正则表达式,具体取决于要保留/删除的字符。