基于regexp的mysql计算字段

时间:2017-06-30 18:57:39

标签: mysql regex

我正在尝试根据其他字段更新字段。

数据如下所示:

id|Measurement

1|15x52 9x2

最终,我希望计算字段如下:

id|Measurement|calcField

1|15x52 9x2|798

测量可能有“你好,乔治”等等,所以只有找到[数字] x [数字]我们才应该计算。

我很满意:

id|Measurement|calcField

1|15x52 9x2|780 18

任何帮助将不胜感激! 谢谢。

2 个答案:

答案 0 :(得分:1)

您必须使用LOCATE()来查找空格和x字符,获取它们之间的子字符串,并使用这些子字符串进行算术运算。不幸的是,当没有可以提取部分字符串的正则表达式匹配器时,这真的很冗长。

IF(Measurement REGEXP '^[0-9]+x[0-9]+ [0-9]+x[0-9]+$',
   LEFT(Measurement, LOCATE('x', Measurement)-1) *
   SUBSTR(Measurement, LOCATE('x', Measurement)+1, LOCATE(' ', Measurement)-LOCATE('x', Measurement))
   +
   SUBSTR(Measurement, LOCATE(' ', Measurement)+1, LOCATE('x', Measurement, LOCATE(' ', Measurement))-LOCATE(' ', Measurement)-1) *
   SUBSTR(Measurement, LOCATE('x', Measurement, LOCATE(' ', Measurement))+1), 0)

如果你必须处理任意数量的`### x

答案 1 :(得分:0)

这解决了我的问题。虽然不是直接在MySQL,我从MySQL领域拉。我希望它有所帮助。

CastError: Cast to ObjectId failed for value "private" at path "_id" for model "club"