Я хочу проверить, является ли результат десятичным или целым числом. Чтобы это можно было сделать в манипуляции или существующей функции? Например:
select case when a/b = integer then 1 when a/b = decimal then 2 end from test
Спасибо.
Вы можете использовать функцию модуля следующим образом:
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
@AbdullaNilam Это зависит от того, какая СУБД используется, которая не была помечена.
@Charlieface операция пропущена. Это sql-сервер
Вы можете использовать функцию MOD. Это дает остаток деления.
MOD(a, b)
вернет ноль, если a делится на b.
MOD(a, b)
вернет значение больше нуля, если a не делится на b, или, другими словами, a/b не даст целое число.
mod
не будет работать в SQL
@AbdullaNilam Вы имеете в виду Microsoft SQL Server
? Я почти уверен, что использовал MOD в SQL.
@AbdullaNilam SQL — это язык, который имеет свои различия в разных СУБД. MOD
не будет работать в SQL Server, должно быть правильно
Ты тоже можешь это сделать
SELECT
CASE
WHEN a % b = 0 THEN 1
ELSE 2
END AS result
FROM
test;
СПАСИБО, НО МОД НЕ распознал имя встроенной функции в клиентском сервере sql..
@j-r23 можешь использовать WHEN a % b = 0 THEN 1
Отметьте вопрос реализацией SQL, чтобы получить соответствующий ответ!