Microsoft SQL azure деление студии на ноль при делении чисел меньше 1 - PullRequest
0 голосов
/ 18 марта 2020

Я создал эту демонстрационную таблицу -

create table main(
    val1 int,
    val2 int
);

вставил пару значений

 insert into main values(0.54,0.56);

, когда я запускаю этот запрос

select val1/val2 from main

Я получаю 'Ошибка деления на ноль.' Это происходит потому, что знаменатель округляется до нуля, прежде чем произойдет деление. Как мне решить эту проблему? Когда я пытаюсь привести значения к цифре c, ошибка все еще сохраняется.

select cast(val1 as numeric(3,2)) / cast(val2 as numeric(3,2)) 
from main

1 Ответ

4 голосов
/ 18 марта 2020

Проверьте, какие значения в вашей таблице на самом деле ... После вашего INSERT, если вы выполните:

SELECT val1, val2
FROM dbo.main;

Вы заметите, что значения равны 0 и 0 соответственно. Поэтому вы получаете ошибку. 0.56 это не int, это decimal, поэтому, когда вы INSERT превращаете его в int, он становится int.

Изменение типа данных ваших столбцов. Возможно:

CREATE TABLE dbo.main(val1 decimal(3,2),
                      val2 decimal(3,2));

DB <> Fiddle

...