Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция управления 
V
    Опции темы
Неопытный
Дата 9.1.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



В Аксесе есть функция Iif(выражение;p1;p2) (если выражение - истина, то p1, иначе p2)
Есть ли подобная функция в Sql Plus и какой ее синтаксис?

PM MAIL   Вверх
3x3
Дата 9.1.2007, 14:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8



См. decode и case


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Неопытный
Дата 9.1.2007, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



А синтаксис какой?
PM MAIL   Вверх
LSD
Дата 9.1.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(Неопытный @  9.1.2007,  14:26 Найти цитируемый пост)
А синтаксис какой?

Вверху страницы есть ссылка на документацию по Oracle. Там есть описание синтаксиса.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
3x3
Дата 9.1.2007, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8





--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
Неопытный
Дата 9.1.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Спасибо!
PM MAIL   Вверх
Неопытный
Дата 15.1.2007, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



А функция нахождения длины строки имеется? 
Len, Length - 
PM MAIL   Вверх
3x3
Дата 15.1.2007, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 261
Регистрация: 17.9.2006

Репутация: 2
Всего: 8



Цитата(Неопытный @ 15.1.2007,  18:34)
А функция нахождения длины строки имеется? 
Len, Length -

Кто её знает... Посмотри тут smile


--------------------
Зачем платить больше,
когда можно заплатить дважды?
PM   Вверх
LSD
Дата 15.1.2007, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



LENGTH

А вообще может уже пора научиться пользоваться документацией?


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Неопытный
Дата 10.3.2007, 11:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



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)
...
Разве нет нормальных функций в которых можно сразу условие задавать? 
PM MAIL   Вверх
LSD
Дата 10.3.2007, 13:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(Неопытный @  10.3.2007,  11:43 Найти цитируемый пост)
Разве нет нормальных функций в которых можно сразу условие задавать?

В PL/SQL можно, в SQL нет. Если у тебя хитрые запросы, пиши на PL/SQL свою функцию.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Sqlninja
Дата 12.3.2007, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 353
Регистрация: 15.5.2006
Где: San Francisco, CA

Репутация: 13
Всего: 13



Цитата(LSD @  10.3.2007,  13:38 Найти цитируемый пост)
В PL/SQL можно, в SQL нет

Не понял. А про CASE что, все забыли?

Цитата(Неопытный @  10.3.2007,  11:43 Найти цитируемый пост)
Разве нет нормальных функций в которых можно сразу условие задавать?


Код

SELECT CASE
          WHEN ut.pct_free > 10
       AND    ut.pct_free < 100
       AND    ut.pct_used < 100
             THEN 'yes'
          ELSE 'no'
       END my_case
FROM   user_tables ut;




--------------------
It's better to burn out than to fade away.
PM MAIL WWW ICQ   Вверх
LSD
Дата 12.3.2007, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Цитата(Sqlninja @  12.3.2007,  12:03 Найти цитируемый пост)
Не понял. А про CASE что, все забыли?

Так CASE ему уже советовали, но он его чем-то не устроил.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Неопытный
Дата 12.3.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Не хочется открывать новую тему - какая функция конвертирует Null в 0
PM MAIL   Вверх
LSD
Дата 12.3.2007, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538





--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Неопытный
Дата 17.3.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 84
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



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,...) )  )
Сколько уровней вложенности допускается? Может можно как то по другому?


PM MAIL   Вверх
LSD
Дата 17.3.2007, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 18
Всего: 538



Вообще-то если у вас 100 условий которые надо проверить - то надо менять логику работы.
Возможно ввести таблицу в которую забить соответсвия.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Oracle"
Zloxa
LSD

Данный раздел предназначен для обсуждения проблем с Oracle Database, другие продукты Oracle здесь не обсуждаются. Просьба при создании темы, придерживаться следующих правил:

  • при создании темы давайте ей осмысленное название, описывающее суть проблемы
  • указывайте используемую версию базы, способ соединения и язык программирования
  • при ошибках обязательно приводите код ошибки и сообщение сервера
  • приводите код в котором возникла ошибка, по возможности дайте тестовый пример демонстрирующий ошибку
  • при вставке кода используйте соответсвующие теги: [code=sql] [/code] для подсветки SQL и PL/SQL кода, [code=java] [/code] - для Java, и т.д.

  • документация по Oracle: 9i, 10g, 11g
  • книги по Oracle можно поискать здесь
  • действия модераторов можно обсудить здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Zloxa, LSD.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Oracle | Следующая тема »


 




[ Время генерации скрипта: 0.0572 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.