我们说我已经将数据作为字符串提供:
+----------+
|Size |
+----------+
|15X10 |
|5X4 |
|3 |
|2X6X5 |
+----------+
我想将此列写为整数,如下所示:
+----------+
|Size |
+----------+
|150 |
|20 |
|3 |
|60 |
+----------+
其中一些是三个数字的乘法,其中一些只是一个数字。我可以拆分字符串,但不能让MySQL计算数字。谢谢。
答案 0 :(得分:1)
不是最干净的查询,但您可以使用SUBSTRING_INDEX:
SELECT
Size,
CASE
WHEN Size LIKE '%X%X%' THEN
SUBSTRING_INDEX(Size, 'X', 1)*
SUBSTRING_INDEX(SUBSTRING_INDEX(Size, 'X', 2), 'X', -1)*
SUBSTRING_INDEX(SUBSTRING_INDEX(Size, 'X', 3), 'X', -1)
WHEN Size LIKE '%X%' THEN
SUBSTRING_INDEX(Size, 'X', 1)*
SUBSTRING_INDEX(SUBSTRING_INDEX(Size, 'X', 2), 'X', -1)
ELSE Size
END AS multipied_size
FROM
sizes
此查询仅在您最多有两个X时才有效。请查看小提琴here。