| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Oracle > Функция управления |
| Автор: Неопытный 9.1.2007, 13:40 |
| В Аксесе есть функция Iif(выражение;p1;p2) (если выражение - истина, то p1, иначе p2) Есть ли подобная функция в Sql Plus и какой ее синтаксис? |
| Автор: 3x3 9.1.2007, 14:20 |
| См. decode и case |
| Автор: Неопытный 9.1.2007, 14:26 |
| А синтаксис какой? |
| Автор: LSD 9.1.2007, 14:27 |
Вверху страницы есть ссылка на документацию по Oracle. Там есть описание синтаксиса. |
| Автор: 3x3 9.1.2007, 14:32 |
| http://www.techonthenet.com/oracle/functions/decode.php http://www.techonthenet.com/oracle/functions/case.php http://google.com/ |
| Автор: Неопытный 9.1.2007, 14:46 |
| Спасибо! |
| Автор: Неопытный 15.1.2007, 18:34 |
| А функция нахождения длины строки имеется? Len, Length - |
| Автор: 3x3 15.1.2007, 18:52 | ||
Кто её знает... Посмотри http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/toc.htm |
| Автор: LSD 15.1.2007, 19:17 |
| http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/functions076.htm#i77725 А вообще может уже пора научиться пользоваться документацией? |
| Автор: Неопытный 10.3.2007, 11:43 |
| SELECT supplier_id, decode(trunc ((supplier_id - 1) / 10), 0, 'category 1', 1, 'category 2', 2, 'category 3', 'unknown') result FROM suppliers; In this example, based on the formula: trunc ((supplier_id - 1) / 10 The formula will evaluate to 0, if the supplier_id is between 1 and 10. The formula will evaluate to 1, if the supplier_id is between 11 and 20. The formula will evaluate to 2, if the supplier_id is between 21 and 30. А если мне надо 0, если [0,3) 1, если [3,7] 2, если (7,19] 3, если (19,22) ... Разве нет нормальных функций в которых можно сразу условие задавать? |
| Автор: Sqlninja 12.3.2007, 12:03 | ||||
Не понял. А про CASE что, все забыли?
|
| Автор: LSD 12.3.2007, 13:05 |
Так CASE ему уже советовали, но он его чем-то не устроил. |
| Автор: Неопытный 12.3.2007, 13:15 |
| Не хочется открывать новую тему - какая функция конвертирует Null в 0 |
| Автор: LSD 12.3.2007, 13:30 |
| http://download-uk.oracle.com/docs/cd/B19306_01/server.102/b14200/functions106.htm#i91806 |
| Автор: Неопытный 17.3.2007, 11:27 |
| SELECT id, decode(id, 0,1, 1, 2, 3,4, ... ... //Всего пусть 1000 условий ) result FROM suppliers; Oracle говорит слишком много аргументов, как быть? Может так decode(id,0,1 decode(id,1,2, decode(id,2,3,...) ) ) Сколько уровней вложенности допускается? Может можно как то по другому? |
| Автор: LSD 17.3.2007, 14:30 |
| Вообще-то если у вас 100 условий которые надо проверить - то надо менять логику работы. Возможно ввести таблицу в которую забить соответсвия. |