【问题标题】:Regular expression to get decimal value from string正则表达式从字符串中获取十进制值
【发布时间】:2014-04-24 00:29:53
【问题描述】:

我想从字符串中删除值,然后将其除以某个值,但我的正则表达式返回零或一。

select (trim(total) regexp '^[0-9]*[.]{0,1}[0-9]*$')/3 as total_c
from test;

我怎样才能得到实际值而不是 0 或 1。 例如来自A9.9 我最后想要3.3。 总列的示例日期:

    A9.9
    ABC2.2
    2.3xyz
    22
    .....

【问题讨论】:

  • 发布一些示例数据,你也许可以在没有正则表达式的情况下做到这一点,这很慢。
  • 数字总是在字符串的开头还是结尾?
  • 可以在任何地方,但主要是在最后

标签: mysql sql regex


【解决方案1】:

Mysql 中不直接支持正则表达式替换。 您必须使用用户定义的函数,例如 REGEX_REPLACE(),或者您可以使用 PREG_CAPTURE()

就您的查询而言

select (trim(total) regexp '^[0-9]*[.]{0,1}[0-9]*$')/3 as total_c
from test;

正则表达式后跟 regexp 运算符不匹配并返回值 0,因此结果为 0。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-01
    • 2021-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多