我需要清理一个数据库,其中一列(total\ u area)的某些条目上有一些字符(不是全部)比如5000㎡我需要清理所有有此项的字段,以仅显示500如何使用sql来实现它?我查看了trim,但找不到一种方法来选择所有在数字后面有一个字符的条目,并对其进行修剪任何帮助都将不胜感激谢谢
sulc1iza1#
这很简单。mysql执行隐式转换,忽略数字后面的字符。所以,你可以做:
select (col * 1.0 / 10)
例如,这将返回500。
20jt8wwn2#
假设你想去掉所有不是数字的字符,你可以使用。 REGEXP_REPLACE ,例如。
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,具体取决于要保留/删除的字符。
2条答案
按热度按时间sulc1iza1#
这很简单。mysql执行隐式转换,忽略数字后面的字符。所以,你可以做:
例如,这将返回500。
20jt8wwn2#
假设你想去掉所有不是数字的字符,你可以使用。
REGEXP_REPLACE
,例如。我们要做的是匹配0个或更多的非数字字符序列,然后是1个或更多的数字字符,再匹配0个或更多的非数字字符,然后只生成中间序列。
请注意,您可以使用不同的regexp,具体取决于要保留/删除的字符。