![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите написать простенькую функцию на 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)