Если я понимаю спецификацию, это кажется довольно странным. Я бы использовал функцию substring_index, чтобы обрезать все до точки, включая точку. Но я бы сделал математику, чтобы получить значение v
, 0 <= v <1 </p>
Следуя псевдокоду MySQL сохраненной программы, указанному в вопросе, примерно так:
DECLARE x DECIMAL(5,2);
DECLARE y BIGINT;
SET x := 323.76;
SET y := SUBSTRING_INDEX( ABS(x)-FLOOR(ABS(x)) ,'.',-1) + 0;
Может быть более простой способ сделать это, но это подход, который удовлетворяет моему пониманию спецификации.
В качестве демонстрации выражения, которое выводит значение y
, рассмотрим:
SELECT _x
, SUBSTRING_INDEX( ABS(_x)-FLOOR(ABS(_x)) ,'.',-1) + 0 AS _y
FROM ( SELECT 0 AS _x
UNION ALL SELECT 0.1
UNION ALL SELECT 2.0
UNION ALL SELECT 3.3
UNION ALL SELECT -4.00
UNION ALL SELECT -5.55
UNION ALL SELECT 623.76
UNION ALL SELECT -723.76
) t
возвращает
_x _y
------- -----
0.00 0
0.10 10
2.00 0
3.30 30
-4.00 0
-5.55 55
623.76 76
-723.76 76