|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.06.2010, 09:39 | #1 |
Пользователь
Регистрация: 25.05.2010
Сообщений: 22
|
Чем заменить функцию?
Какой функцией в microsoft sql можно заменить функцию из sql oracle decode
которая подразумевает следующее DECODE(E,S1,R1,S2,R2,…,[def]) - Если E соответствует Si, то возвращается Ri, в противном случае - def или NULL, если умолчание не задано. Чтобы выполнить: max(decode( position, 1, column_name, null )) cname1 |
29.06.2010, 09:44 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Код:
I'm learning to live...
|
29.06.2010, 09:49 | #3 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
kity, недавно меня тоже интересовал подобный вопрос. В сети есть предложения использовать switch, только у меня с ним ничего не получилось. Я писала отдельную функцию с if(условие), которая при нахождении нужного Si выдавала Ri, иначе возвращала def. А вызывала я ее уже в SELECT.
SELECT func(...) WHERE ... что-то вроде такого
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
29.06.2010, 10:22 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Девочки, почитайте мануалы (Тема CASE (Transact-SQL) ) по MS SQL Server
I'm learning to live...
|
29.06.2010, 11:52 | #5 |
Пользователь
Регистрация: 25.05.2010
Сообщений: 22
|
Спасибо! Все получилось
Подскажите, пожалуйста еще функцию: конкатенация (слияние строковых значений). оператор конкатенации — две вертикальные черты (||). Необходимо выполнить следующее: cname1 || nvl2(cname2,','||cname2,null) Как это же выполнить в microsoft sql??? Последний раз редактировалось Stilet; 29.06.2010 в 13:22. |
29.06.2010, 12:41 | #6 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
Stilet, читала... то ли я тупая, то ли я тупая, но ничего не получилось у меня с этими кейсами...
kity, 'строка' + 'строка', насколько я помню
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
29.06.2010, 13:26 | #7 | ||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Все там просто: Код:
Цитата:
I'm learning to live...
|
||
29.06.2010, 16:04 | #8 |
Пользователь
Регистрация: 25.05.2010
Сообщений: 22
|
Ahtung! Если одна из строк NULL то NULL вернется
ага! у меня так и получилось! как написать, чтобы null не возвращалось, если есть не нулевое значение!!!! |
29.06.2010, 16:08 | #9 |
Сама себе режиссер
Старожил
Регистрация: 27.04.2007
Сообщений: 3,365
|
Stilet, с такими примерами я поняла. Но у меня по айдишнику книги вытягивалась информация о переплете(твердый или мягкий). Но в таблице книг на месте информации о переплете мог стоять NULL, и нужно было чтоб при этом если стоит NULL, то вместо него SELECT возвращал "нет информации". Честно, я не додумалась как это сделать кейсами. И сперва даже не додумалась, что можно просто в таблице с названиями переплетов сделать запись, которая и будет собственно выводить "нет информации". Тогда сделала функцию, возвращающую нужные мне данные.
Если я вас напрягаю или раздражаю, вы всегда можете забиться в угол и поплакать
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чем заменить assign | pasha_1994 | Помощь студентам | 6 | 21.12.2009 12:29 |
чем заменить goto? | Agronom | Общие вопросы C/C++ | 3 | 19.12.2009 19:43 |
Чем заменить GetFreeSystemResources? | rocky7 | Компоненты Delphi | 0 | 23.08.2009 20:20 |
Чем можно заменить объект BitBtn? | frai | Компоненты Delphi | 3 | 14.04.2007 12:42 |