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

MariaDBでのTRUNCATE()のしくみ

    MariaDBでは、TRUNCATE() は、指定された数値を返し、指定された小数点以下の桁数に切り捨てられる組み込みの数値関数です。

    構文

    構文は次のようになります:

    TRUNCATE(X,D)

    ここでX は切り捨てる値であり、D 切り捨てる小数点以下の桁数を指定します。

    次に例を示します:

    SELECT TRUNCATE(1.25817, 2);

    結果:

    +----------------------+
    | TRUNCATE(1.25817, 2) |
    +----------------------+
    |                 1.25 |
    +----------------------+

    さらにいくつかあります:

    SELECT 
        TRUNCATE(1.25817, 1),
        TRUNCATE(1.25817, 2),
        TRUNCATE(1.25817, 3),
        TRUNCATE(1.25817, 4);

    結果(垂直出力を使用):

    TRUNCATE(1.25817, 1): 1.2
    TRUNCATE(1.25817, 2): 1.25
    TRUNCATE(1.25817, 3): 1.258
    TRUNCATE(1.25817, 4): 1.2581

    負の小数点以下の桁数

    2番目の引数は、必要に応じて負の値にすることができます。負の値を渡すと、に数字が表示されます 小数点以下の桁数がゼロになります。

    例:

    SELECT TRUNCATE(5824.17, -2);

    結果:

    +-----------------------+
    | TRUNCATE(5824.17, -2) |
    +-----------------------+
    |                  5800 |
    +-----------------------+

    ROUND()との比較

    TRUNCATE() 関数はROUND()とは異なります 働き。 ROUND() 関数は、数値を切り上げる場合と切り下げる場合があります。 TRUNCATE() 一方、関数は、四捨五入せずに数値を切り捨てるだけです。

    この違いを示すための比較は次のとおりです。

    SELECT 
        TRUNCATE(3.6789, 2),
        ROUND(3.6789, 2);

    結果:

    +---------------------+------------------+
    | TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
    +---------------------+------------------+
    |                3.67 |             3.68 |
    +---------------------+------------------+

    FLOOR()とも異なります 関数。引数以下の最大の整数値を返します。 FLOOR() ROUND()のような2番目の引数を受け入れません およびTRUNCATE() 実行します(とにかく整数のみを返します)。

    非数値引数

    数値以外の引数を指定すると、次のようになります。

    SELECT TRUNCATE('Ten', 'Two');

    結果:

    +------------------------+
    | TRUNCATE('Ten', 'Two') |
    +------------------------+
    |                      0 |
    +------------------------+
    1 row in set, 3 warnings (0.000 sec)

    警告を確認しましょう:

    SHOW WARNINGS;

    結果:

    +---------+------+------------------------------------------+
    | Level   | Code | Message                                  |
    +---------+------+------------------------------------------+
    | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' |
    | Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten'  |
    | Warning | 1292 | Truncated incorrect INTEGER value: 'Two' |
    +---------+------+------------------------------------------+

    無効な引数カウント

    TRUNCATE()の呼び出し 引数の数が間違っているか、引数がないとエラーが発生します:

    SELECT TRUNCATE();

    結果:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

    そして:

    SELECT TRUNCATE(1, 2, 3);

    結果:

    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 3)' at line 1

    1. SQL Server一括挿入–パート1

    2. リンクサーバーでRPC出力が有効になっているかどうかを確認します

    3. ClusterControl1.8.2を使用したPostgreSQLv13のデプロイとスケーリング

    4. PostgreSQLでの再帰トリガーの防止