Отображение десятичных дробей в виде дробей с использованием SQL - PullRequest
1 голос
/ 28 сентября 2011

Мне нужно написать запрос SELECT для некоторых пользователей, который будет возвращать соотношение.Математика будет просто деление двух чисел.Тем не менее, они хотели бы, чтобы соотношение было представлено как дробная, а не как десятичная дробь.Каков наилучший способ сделать это в SQL с использованием Oracle 10g?

1 Ответ

9 голосов
/ 28 сентября 2011

Вы можете определить функцию в Oracle для вычисления наибольшего общего делителя ( взято отсюда ):

CREATE FUNCTION gcd (x INTEGER, y INTEGER) RETURN INTEGER AS
   ans INTEGER;
BEGIN
   IF (y <= x) AND (x MOD y = 0) THEN
      ans := y;
   ELSIF x < y THEN 
      ans := gcd(y, x);  -- Recursive call
   ELSE
      ans := gcd(y, x MOD y);  -- Recursive call
   END IF;
   RETURN ans;
END;

А затем используйте эту функцию в SQL для объединения строки дроби:

SELECT CAST(TRUNC(A / GCD(A, B)) AS VARCHAR2(10)) 
       || ' / ' || 
       CAST(TRUNC(B / GCD(A, B)) AS VARCHAR2(10)) AS FRACTION FROM TABLE
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...