私はMySQLで次のようにDecimalにキャストしようとしています:
CAST((COUNT(*) * 1.5) AS DECIMAL(2))
テーブルの行数(1.5倍)を、小数点以下2桁の浮動小数点数に変換しようとしています。
SQLコード:
SELECT CONCAT(Guardian.title, ' ',
Guardian.forename, ' ',
Guardian.surname) AS 'Guardian Name',
COUNT(*) AS 'Number of Activities',
(COUNT(*) * 1.5) AS 'Cost'
FROM Schedule
INNER JOIN Child ON Schedule.child_id = Child.id
INNER JOIN Guardian ON Child.guardian = Guardian.id
GROUP BY Guardian
ORDER BY Guardian.surname, Guardian.forename ASC
エラーが発生します。
#1064 - You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use
near 'CAST((COUNT(*) * 1.5) AS DECIMAL(12,2))' at line 1.
別の試み、このキャストも機能しません:
SELECT CONCAT(Guardian.title, ' ',
Guardian.forename, ' ',
Guardian.surname) AS 'Guardian Name',
COUNT(*) AS 'Number of Activities',
CAST((COUNT(*) * 1.5) AS DECIMAL(8,2)) AS 'Cost'
FROM Schedule
INNER JOIN Child ON Schedule.child_id = Child.id
INNER JOIN Guardian ON Child.guardian = Guardian.id
GROUP BY Guardian
ORDER BY Guardian.surname, Guardian.forename ASC
Mysqlを使用して整数から10進数にキャストするにはどうすればよいですか?
MySQLドキュメントから: 固定小数点タイプ(正確な値)-10進数、数値 :
標準SQLでは、構文
DECIMAL(M)
はDECIMAL(M,0)
と同等です
したがって、2桁の整数と0桁の10進数で数値に変換しています。代わりにこれを試してください:
CAST((COUNT(*) * 1.5) AS DECIMAL(12,2))
整数を10進数にキャスト:
select cast(9 as decimal(4,2)); //prints 9.00
キャスト整数8/5から10進数:
select cast(8/5 as decimal(11,4)); //prints 1.6000
文字列を10進数にキャスト:
select cast(".885" as decimal(11,3)); //prints 0.885
2つのint変数を10進数にキャスト
mysql> select 5 into @myvar1;
Query OK, 1 row affected (0.00 sec)
mysql> select 8 into @myvar2;
Query OK, 1 row affected (0.00 sec)
mysql> select @myvar1/@myvar2; //prints 0.6250
10進数を文字列にキャスト:
select cast(1.552 as char(10)); //shows "1.552"
DECIMAL
には、Precision
とScale
の2つの部分があります。したがって、クエリの一部は次のようになります。
CAST((COUNT(*) * 1.5) AS DECIMAL(8,2))
Precision
は、値に格納される有効桁数を表します。Scale
は、小数点以下に格納できる桁数を表します。
別の方法として、私はあなたの目的のために、round()関数を使用することだと思います:
select round((10 * 1.5),2) // prints 15.00
あなたはそれを試すことができます こちら :