Как определить записи с нулями после десятичной точки?

См. Снимок экрана:

SS

Как бы вы написали оператор case для идентификации записей только с нулями после десятичной точки.

Вот как выглядит структура моего оператора select case:

SELECT CASE WHEN (ONLY ZEROS AFTER 
DECIMAL POINT)
THEN CAST(VALUE AS int) FROM MyTable

Я сохраняю это как varchar(25) только потому, что есть еще два поля, которые мне нужно объединить с указанными выше числами.

Какой тип данных для столбца?

Igor 10.08.2018 17:31

Я сохраняю это как varchar (25) только потому, что есть еще два поля, которые мне нужно объединить с указанными выше числами.

ProdSupport 10.08.2018 17:42
0
2
38
2

Ответы 2

Один из способов:

(case when value = floor(value) then cast(value as int) end)

Вы можете сделать что-то похожее на ответ Гордона, но при этом учитывается, что вы сохраняете номер как varchar(25)

declare @mytable table (value varchar(25) not null)
insert into @mytable (value) values ('1.31'),('5.00'),('2.500'),('6.00'),('8.0000'),('1.0'),('3.0000000')

select coalesce(cast((case when DecimalValue = floor(DecimalValue) then cast(DecimalValue as int) end) as varchar(25)), VarcharValue)
from (select cast(value as decimal(18,9)) as DecimalValue, value as VarcharValue from @mytable) as tmp

http://rextester.com/QRRW4456

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