我需要清理一个数据库,其中某列(TOTAL_AREA)的某些条目上有一些字符(不是全部)
约5000㎡
我需要清除所有具有该条目的字段,以仅显示500
我该如何使用SQL?我查看了TRIM,但找不到一种方法来选择所有在数字后带有字符的条目,然后对其进行TRIM
任何帮助将不胜感激
谢谢
答案 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个或多个非数字字符的序列,只产生中间序列
请注意,您可以使用不同的正则表达式,具体取决于要保留/删除的字符。