Oviya Sivakumar Ответов: 1

Как решить усеченное неверное целочисленное значение в mariadb SQL server


я должен найти emp_name, и зарплата увеличивается на 15% и выражается в количестве долларов.Есть две таблицы сотрудники и зарплаты

когда я ввел запрос
он вызвал ошибку под названием усеченное целочисленное значение:"$99,999"

Что я уже пробовал:

я попробовал выполнить следующий запрос

выберите метод concat(электронная."имя"," ", е.фамилия)
как "имя сотрудника",
char(s.зарплата*15/100,'$99,999') как 'нет.Из Доллоров'
от сотрудников e
присоединяйтесь к зарплатам s
на эл.emp_no=С. emp_no
группа по эл.emp_no,С. emp_no;

Richard MacCutchan

Я могу только предположить, что s.зарплата-это целочисленное значение, поэтому вы потеряете точность, умножив ее на 15/100.

Oviya Sivakumar

i hv также дал формат(1.15*s.зарплата,'$99,999'), хотя он показывает ту же ошибку, что и усеченное целочисленное значение:'$99999'

Richard MacCutchan

Если я использую;

SELECT FORMAT(1.15 * 33, 'C2');

он дает правильный ответ:
$37.95

Oviya Sivakumar

когда я попробовал следующее

выберите метод concat(электронная."имя"," ", е.фамилия)в формате "имя сотрудника"', (з.зарплата*1.15,'С2') как 'нет.Из Доллоров'
от сотрудников e
присоединяйтесь к зарплатам s
на эл.emp_no=С. группа emp_no по электронной.emp_no,С. emp_no;
это показывает
Усеченное неверное целочисленное значение: 'C2'

Richard MacCutchan

Нет смысла повторять один и тот же запрос, когда проблема должна быть связана с вашими данными. Сначала забудьте о двух именах и просто используйте простой запрос, чтобы получить значение зарплаты и посмотреть, что она содержит. Затем попробуйте отформатировать его как простое значение валюты, используя 'C2'. Затем попробуйте применить коэффициент умножения. Грубая сила никогда не работает, простые логические шаги-самый быстрый способ найти решение.

1 Ответов

Рейтинг:
12

OriginalGriff

Не используйте char, используемый формат: Как форматировать числа в качестве валюты в SQL Server (T-SQL) | Database.Руководство[^]

Цитата:
select concat(e.first_name," ",e.last_name)as 'employee name',format(1.15*s.salary,'$99999') as 'No.Of Dollors'
from employees e
join salaries s
on e.emp_no=s.emp_no group by e.emp_no,s.emp_no;


Когда вам дадут ссылку на документацию, прочитайте, что там написано полностью...
"$99999" не является допустимым форматом.
Когда я пытаюсь форматировать, это работает для меня:
DECLARE @SALARY INT = 1000
SELECT FORMAT (@SALARY * 1.15, '$##,###', 'EN-US')
Поэтому попробуйте сделать это в своем SQL и измените тип @SALARY в соответствии с вашей базой данных.
Когда это работает - или выдает ту же ошибку, что и для меня, - покажите нам точный код, который генерирует проблему, или перенесите его в свой SQL-запрос и попробуйте там.

Я бы заподозрил, что ваша БД содержит "нечетные значения" и, вероятно, что s.salary это не числовое поле.


Oviya Sivakumar

я использовал format() вместо char (),хотя он показывал ту же ошибку, что и усеченное неверное целочисленное значение

OriginalGriff

И как именно вы его использовали?
Скопируйте и вставьте код.

Oviya Sivakumar

выберите метод concat(электронная."имя"," ", е.фамилия), как имя сотрудника',формат(1.15*ы.зарплата,'$99999') как 'нет.Из Доллоров'
от сотрудников e
присоединяйтесь к зарплатам s
на эл.emp_no=С. группа emp_no по электронной.emp_no,С. emp_no;

OriginalGriff

Ответ обновлен.

Oviya Sivakumar

выберите метод concat(электронная."имя"," ", е.фамилия)в формате "имя сотрудника"', (з.зарплата*1.15,'$99,999','АН-нас') как 'нет.Из Доллоров'
от сотрудников e
присоединяйтесь к зарплатам s
на эл.emp_no=С. группа emp_no по электронной.emp_no,С. emp_no;

хотя он показывает ту же ошибку, что и
Усеченное неверное целочисленное значение: '$99,999'
и
Неизвестный язык: 'EN-US'

OriginalGriff

Прочитай
Что
Я
Сказал.

:вздыхать: