SELECT недопустим с ДЕСЯТИЧНЫМ числом в MySQL

#sql #decimal

#sql #десятичное число

Вопрос:

Я попытался выполнить формулировку вопроса в книге IBM с указанным ответом, но я получил сообщение об ошибке

SELECT недопустим в этой позиции

 SELECT LASTNAME, SALARY,
DECIMAL(SALARY*1.05,9,2) AS "INC-Y-SALARY",
DECIMAL(SALARY*1.05/12,9,2) AS "INC-M-SALARY"
FROM EMPLOYEE
WHERE SALARY*1.05 <= 20000
ORDER BY SALARY
 

Ошибка исчезла, когда я заменил вторую и третью строки на

 SALARY*1.05 AS "INC-Y-SALARY",
SALARY*1.05/12 AS "INC-M-SALARY"
 

но для вопроса нужны эти столбцы с двумя десятичными знаками

Комментарии:

1. Вы не можете применить специфичный для IBM Db2 синтаксис к MySQL…

2. действительно? я не знал .. другие вопросы были в порядке

3. Пометьте свой вопрос базой данных, которую вы используете.

4. @a_horse_with_no_name операционная система не использует MySQL. Вероятно, это DB2.

5. @forpas но в названии вопроса написано «в MySQL»

Ответ №1:

Вы ищете CAST() ?

 SELECT LASTNAME, SALARY,
       CAST(SALARY*1.05 AS DECIMAL(9,2)) AS "INC-Y-SALARY",
       CAST(SALARY*1.05/12 AS DECIMAL(9,2)) AS "INC-M-SALARY"
 

Вот скрипка db<> .

Комментарии:

1. @arina . . . Попробуйте еще раз, произошла опечатка.

Ответ №2:

я нашел решение, используя truncate. раньше я не знал, как использовать truncate…

 SELECT LASTNAME, SALARY,
TRUNCATE((SALARY*1.05),2) AS "INC-Y-SALARY",
TRUNCATE((SALARY*1.05/12),2) AS "INC-M-SALARY"
FROM EMPLOYEE
WHERE SALARY*1.05 <= 20000
ORDER BY SALARY;
 

спасибо за всю помощь!

примечание: я использую MySQL