Kedarnath M S Ответов: 3

Опустить числа, которые заканчиваются десятичной дробью в SQL


Я хочу опустить все числа, которые заканчиваются десятичной дробью, например 145. и 145.5 в SQL Server.

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

объявить @value float = 1
выберите "abc"
где новое значение не как % (литой(@значение как int) + '.') %

3 Ответов

Рейтинг:
1

OriginalGriff

ГМ...значения с плавающей запятой не "заканчиваются десятичной запятой" - это числовое значение, которое может содержать или не содержать десятичную точку, когда представлено пользователю в виде строки. В результате все они потенциально содержат "десятичную дробь": 100-это также 100.0, и 100.000, и 1.0E2 все одновременно.
А поскольку @value в вашем примере кода является FLOAT, попытка преобразовать его в int, а затем добавить строку просто приведет к ошибке, так как float попытается вернуть остальные данные обратно в число - а " % " - это не число!. Что еще хуже, LIKE не работает с числами, только со строками, поэтому он не будет работать, если вы в какой-то момент преобразуете его обратно в строку.
Если вы пытаетесь исключить значения xxx. 0 и xxx. 5, то это не сложно:

declare @value float = 1
select 'abc'
where (@value -CAST (@value AS INT) != 0) AND (@value -CAST (@value AS INT) !=.5)


Рейтинг:
1

W∴ Balboos, GHB

Видеть Modulo (Transact-SQL)[^]- где остаток равен 0


Рейтинг:
0

Patrice T

Я думаю, вы хотите выбрать только целочисленные значения.
- используйте пол

WHERE @value = floor(@value)

- использовать по модулю
WHERE @value % 1 = 0 

- используйте круглый
WHERE @value = round(@value, 0)