![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Нужно упростить запрос [MSSQL]
Ольга © (2009-07-07 11:22:00)В таблице есть поле float. В запросе это поле нужно представить в виде двух натуральных чисел - целая и дробная части без округлений.
Делаю с помощью строковых функций - получилась громоздкая конструкция. Уверена, что можно сделать проще, не могу найти как.
IF object_id('tempdb..#tmp') is not null DROP TABLE #tmp
CREATE TABLE #tmp(val2 float)
INSERT INTO #tmp VALUES (-956.5)
SELECT ABS(cast(CASE WHEN CHARINDEX('.',cast(val2 as varchar(20)))>0
THEN substring(cast(val2 as varchar(20)),1,CHARINDEX('.',cast(val2 as varchar(20)))-1)
ELSE NULL END as int)),
cast(CASE WHEN CHARINDEX('.',cast(val2 as varchar(20)))>0
THEN substring(cast(val2 as varchar(20)),CHARINDEX('.',cast(val2 as varchar(20)))+1,2)
ELSE NULL END as int)
FROM #tmp
Кщд (2009-07-07 11:54:00) [41]>Ольга © (07.07.09 11:22)
floor, round, ceiling не работают?
Ольга (2009-07-07 11:54:00) [42]
> А зачем понадобилась дробная часть плавающего числа как
> целое БЕЗ ОКРУГЛЕНИЯ
Так у заказчика хранятся данные (таблица создана до рождения Билла Гейтса): целая часть - количество "табуреток", дробная - количество "валенок". Делаю нормальную БД, нужно перенести данные.
MsGuns (2009-07-07 11:43:00) [43]А зачем понадобилась дробная часть плавающего числа как целое БЕЗ ОКРУГЛЕНИЯ ?
Ega23 (2009-07-07 11:26:00) [44]Я бы в numeric сначала попробовал скастовать, а дальше уже с ним игрался бы.