1
我需要爲某些用戶編寫一個SELECT查詢來返回比率。涉及的數學只是兩個數的簡單劃分。但是,他們希望將比率表示爲小數而不是小數。使用Oracle 10g在SQL中執行此操作的最佳方法是什麼?使用SQL顯示小數爲分數
我需要爲某些用戶編寫一個SELECT查詢來返回比率。涉及的數學只是兩個數的簡單劃分。但是,他們希望將比率表示爲小數而不是小數。使用Oracle 10g在SQL中執行此操作的最佳方法是什麼?使用SQL顯示小數爲分數
您可以在Oracle中定義一個函數來計算最大公約數(taken from here):
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
另請參閱:http://en.wikipedia.org/wiki/Euclidean_algorithm – NullUserException
是'4/8'確定還是需要簡化爲'1/2'? –
這個比例如何存儲? (即:你有分母和分子嗎?) – NullUserException
分數需要簡化,馬克。 – indiguy