Как вы можете вычислить, является ли результат десятичным или целым числом в SQL?

Я хочу проверить, является ли результат десятичным или целым числом. Чтобы это можно было сделать в манипуляции или существующей функции? Например:

select case when a/b = integer then 1 when a/b = decimal then 2 end  from test
  • если a = 10 и b = 2, результат должен быть 1.
  • если a = 11 и b = 2, результат должен быть 2.

Спасибо.

Отметьте вопрос реализацией SQL, чтобы получить соответствующий ответ!

JGFMK 24.06.2024 11:41
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
79
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вы можете использовать функцию модуля следующим образом:

SELECT CASE 
    WHEN MOD(a, b) = 0 THEN 1 
    ELSE 2 
END AS ResultType
FROM test;

Если функция MOD недоступна, вы можете использовать оператор модуля.

SELECT CASE 
    WHEN a % b = 0 THEN 1 
    ELSE 2 
END AS ResultType
FROM test;

И вы даже можете использовать функцию FLOOR() следующим образом:

SELECT CASE 
    WHEN a / b = FLOOR(a / b) THEN 1 
    ELSE 2 
END AS ResultType
FROM test;
mod не будет работать в SQL
Abdulla Nilam 24.06.2024 11:49

@AbdullaNilam Это зависит от того, какая СУБД используется, которая не была помечена.

Charlieface 24.06.2024 11:55

@Charlieface операция пропущена. Это sql-сервер

Abdulla Nilam 24.06.2024 11:59

Вы можете использовать функцию MOD. Это дает остаток деления.

MOD(a, b) вернет ноль, если a делится на b.

MOD(a, b) вернет значение больше нуля, если a не делится на b, или, другими словами, a/b не даст целое число.

mod не будет работать в SQL
Abdulla Nilam 24.06.2024 11:49

@AbdullaNilam Вы имеете в виду Microsoft SQL Server? Я почти уверен, что использовал MOD в SQL.

Peter B 24.06.2024 12:09

@AbdullaNilam SQL — это язык, который имеет свои различия в разных СУБД. MOD не будет работать в SQL Server, должно быть правильно

Ergest Basha 24.06.2024 12:22
Ответ принят как подходящий

Ты тоже можешь это сделать

SELECT 
    CASE 
        WHEN a % b = 0 THEN 1
        ELSE 2 
    END AS result
FROM 
    test;

СПАСИБО, НО МОД НЕ распознал имя встроенной функции в клиентском сервере sql..

j-r23 24.06.2024 11:36

@j-r23 можешь использовать WHEN a % b = 0 THEN 1

Abdulla Nilam 24.06.2024 11:37

Другие вопросы по теме