我正在尝试根据其他字段更新字段。
数据如下所示:
id|Measurement
1|15x52 9x2
最终,我希望计算字段如下:
id|Measurement|calcField
1|15x52 9x2|798
测量可能有“你好,乔治”等等,所以只有找到[数字] x [数字]我们才应该计算。
我很满意:
id|Measurement|calcField
1|15x52 9x2|780 18
任何帮助将不胜感激! 谢谢。
答案 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"