Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Помогите написать простенькую функцию на SQL [MSSQL]


Бывающий ©   (2004-01-20 15:43:00) 

Функция должна возвращать целую часть числа. Если число отрицательно, то 0. Типа во так, но надо на SQL-e:

Function I(Expression)
Expression = Int(Expression)
If Expression < 0 Then Expression = 0
I = Expression
End Function


Ega23   (2004-01-20 16:32:00) [1]


> Skif (20.01.04 16:08) [8]
> >Ega23
> Я писал только в SQL, без конвертации в делфу. Так что принимаю
> ошибку только when test<=0 then 0 ;))) Авсе остальное с
> командной строки монитора MySQL чудно работает.


1. В качестве СУБД был указан MSSQL, а не MySQL.
2. end после Case был забыт.
3. Сама конструкция case была написана неправильно.
4. Это чистый TSQL, Delphi тут не при чём.


Бывающий   (2004-01-20 16:24:00) [2]

Спасибо всем, коллеги!


Fay   (2004-01-20 16:12:00) [3]

не ROUND, а FLOOR !


ZrenBy   (2004-01-20 16:12:00) [4]

select sign((sign(Field)+1))*floor(Field)


Skif   (2004-01-20 16:08:00) [5]

>Ega23
Я писал только в SQL, без конвертации в делфу. Так что принимаю ошибку только when test<=0 then 0;))) Авсе остальное с командной строки монитора MySQL чудно работает.


Ega23   (2004-01-20 16:00:00) [6]


>
> select test,case
> when test<=0 then test=0
> when test>0 then ROUND(test,0)
> from you_table;

Неправильно.

select test=case when test<=0 then 0
when test>0 then ROUND(test,0) end
from you_table


Бывающий   (2004-01-20 15:58:00) [7]

FLOOR нашел!


Бывающий   (2004-01-20 15:57:00) [8]

Не совсем так. Мне надо взять целую часть, а round округляет.
20.8 - должно давать 20, а не 21.


Polevi   (2004-01-20 15:55:00) [9]

end забыл


Skif   (2004-01-20 15:53:00) [10]

сори, вкралась маленькая ошибочка:

select test,case
when test<=0 then test=0
when test>0 then ROUND(test,0)
from you_table;


stone   (2004-01-20 15:50:00) [11]

round и abs комбинируй


Skif   (2004-01-20 15:49:00) [12]

case
when test<=0 then p=0
when test>0 then p=ROUND(test,0)


Наверх

Титульная страница Поиск, карта сайта Написать письмо