web-dev-qa-db-ja.com

sqlserverでROUNDDOWNを使用する方法

ROUNDDOWN機能を使いたい。

次のクエリを使用しようとすると、「「rounddown」は認識された組み込み関数名ではありません」というエラーが表示されます。

select rounddown(25.227,2)

私の要件は、値を小数点以下2桁に切り捨てることです

例:値25.22789の場合、結果は25.22になります

そしてまた切り上げ

例:値25.22789の場合、結果は25.23になります

何か助けは?

前もって感謝します

7
Santosh

ROUND() 関数の3番目のパラメーターを使用して切り捨て、次にCONVERT()DECIMAL(x, 2)に使用して、不要な後続ゼロを削除します。

フィドルデモ

SELECT CONVERT(DECIMAL(10,2), ROUND(25.227, 2, 1)) RoundDown,
        CONVERT(DECIMAL(10,2), ROUND(25.227, 2, 0)) RoundUp

結果

| RoundDown | RoundUp |
|-----------|---------|
|     25.22 |   25.23 |
10
Kaf

あなたはCEILING()またはfloor()関数のいずれかを探していると思います

select CEILING(25.227) //results in 26

(または)

select FLOOR(25.227) //Results in 25

編集:

例:値25.22789の場合、結果は25.22になります

以下のように試すことができます

select round(25.22789, 2, 2)

結果は25.22000

6
Rahul

端数を切り捨てるには、単純な数式を使用します(四捨五入したいよりも小数点第1位まで)。

SELECT ROUND(25.22789 - 0.005, 2)

出力25.22

切り上げには、単にROUNDを使用します。

SELECT ROUND(22.22789, 2)

出力25.23

2
Wonko the Sane

ラウンド関数

SELECT ROUND(@num, 2, 1)を使用できます

[〜#〜] round [〜#〜] の説明に従って:

ROUND ( numeric_expression , length [ ,function ] )

関数が省略されるか、値が0(デフォルト)の場合、numeric_expressionは丸められます。 0以外の値が指定された場合、numeric_expressionは切り捨てられます。

[〜#〜]結果[〜#〜]

25.22

CHARINDEXおよびLEFT

または、"ROUND DOWN"を実行し、_CHARINDEXを使用して"ROUND UP"を実行する場合は、以下でLEFTおよびROUNDを使用できます。

DECLARE @num DECIMAL(16,3) = 25.227

SELECT LEFT(@num,CHARINDEX('.',@num)+2) as [RoundDown],
       ROUND(@num,2) as [RoundUp]

[〜#〜]結果[〜#〜]

RoundDown   RoundUp
25.22       25.23

[〜#〜]更新[〜#〜]

ROUNDUPに関するコメントに従って、次のように使用できます。

SELECT ROUND(22.22289 + 0.005, 2) as [RoundUp1]

[〜#〜]結果[〜#〜]

25.23

[〜#〜]デモ[〜#〜]

あなたはそれをテストすることができます SQL FIDDLE

また、CASTを使用できます。

    declare @num decimal(18,5) = 22.22719
    select @num, CAST(@num as decimal(18,3))
0
M_Idrees