sql >> データベース >  >> RDS >> Sqlserver

SQLServer2008での10進数の切り捨て

    1) select CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) 最初のケースを処理します-SQLServerフォーラムの同様の質問への回答の礼儀 、私はそれを適応させてすぐにチェックしました。

    数値を最も近い0.5に丸める場合は注意してください 大きくなる可能性があります(例:333.69 => 333.5 )、必ずdecimalを追加してください キャスト時の精度(例:select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) )、またはオーバーフローエラーが発生する可能性があります:

    Msg 8115, Level 16, State 8, Line 1
    Arithmetic overflow error converting numeric to data type numeric.
    

    精度を上げても、最終的な結果には影響しません(つまり、select CAST(FLOOR(2 * 3.69) / 2 AS decimal(10, 1)) およびselect CAST(FLOOR(2 * 3.69) / 2 AS decimal(2, 1)) どちらも3.5を生成します );ただし、四捨五入する数値が常に小さくなると無駄になります。

    T-SQLの例を含むオンラインリファレンスを利用できます FLOOR CAST 、および decimal> 助けるために。

    2) select ROUND(142600, -3) 2番目のケースを処理します。

    同様のオンラインリファレンスがT-SQL ROUND



    1. MySQLトリガーは、トリガーが割り当てられている同じテーブルの行を更新できません。推奨される回避策は?

    2. Oracleデータベースの日時値から分を取得する2つの方法

    3. SQL Serverで、特定のテーブルに対してCREATE TABLEステートメントを生成するにはどうすればよいですか?

    4. ローカルのOracleインスタンスで開発する