programing

MySQL에서 10진수로 캐스트

stoneblock 2023. 8. 7. 22:17

MySQL에서 10진수로 캐스트

MySQL에서 Decimal을 다음과 같이 캐스팅하려고 합니다.

CAST((COUNT(*) * 1.5) AS DECIMAL(2))

표의 행 수(1.5배)를 점 뒤에 두 자리 숫자가 있는 부동 소수점 숫자로 변환하려고 합니다.

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을 사용하여 정수에서 소수로 캐스트하려면 어떻게 해야 합니까?

MySQL 문서에서: 고정점 유형(정확한 값) - 10진수, 숫자:

표준 SQL에서 구문은DECIMAL(M)와 동등합니다.DECIMAL(M,0)

정수 2자리와 소수점 0자리의 숫자로 변환합니다.대신 사용해 보십시오.

CAST((COUNT(*) * 1.5) AS DECIMAL(12,2)) 

MySQL을 10진수로 캐스팅:

맨 정수를 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

두 int 변수를 소수점으로 캐스팅

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

소수점을 다시 문자열로 캐스팅:

select cast(1.552 as char(10));   //shows "1.552"

DECIMAL두 부분으로 나뉩니다.Precision그리고.Scale따라서 쿼리의 일부는 다음과 같습니다.

CAST((COUNT(*) * 1.5) AS DECIMAL(8,2))

Precision값에 대해 저장된 유효 자릿수를 나타냅니다.
Scale소수점 다음에 저장할 수 있는 자릿수를 나타냅니다.

나는 게으릅니다.

0 + colname

또한 소수점 이하, 부동 소수점 등의 숫자로 고정된 경우에도 작동합니다.

참고 항목ROUND()그리고.FORMAT().

제 생각에 당신의 목적을 위한 대안은 라운드() 함수를 사용하는 것입니다.

select round((10 * 1.5),2) // prints 15.00

여기에서 사용할 수 있습니다.

언급URL : https://stackoverflow.com/questions/11830509/cast-to-decimal-in-mysql