2016-08-31 2 views
1

Как выполнить случай в функции concac с оракулом? Я хочу указать номер и письмо, основанное на номере. т.е. если число больше, чем 1, я должен добавить s else not. Я попробовал запрос ниже, но его не работает.Как выполнить случай в функции concac-oracle?

Select concat(count(*) , if count(*) > 1 then 's' else '') 
    from tablename 
    group by columnname; 

ответ

0

В Oracle лучше использовать || для конкатенации, и там нет if но есть case выражения. Я покажу решение с ||, так как это лучшая практика, но если вы должны использовать concat, вы можете это сделать. Кроме того, Oracle преобразует число в VARCHAR2 для вас, но лучше всего писать свои преобразования явно.

select to_char(count(*)) || case when count(*) > 1 then 's' end from .... 

Примечание - значение по умолчанию case является '' (такой же, как NULL в Oracle), так что мне не нужно писать больше.

+0

выбрать to_char (count (*)) || case, если count (*)> 1, затем «aa» заканчивается из группы занятий по профессии * ОШИБКА в строке 1: ORA-00923: FROM ключевое слово не найдено, где ожидалось –

+0

Можете скопировать и вставить? (Так как просто копирование строки текста кажется слишком сложным.) Я просто сказал вам, что в Oracle нет 'if'. Вы писали 'if', где я писал' when'. Вы видите это сейчас? Если нет, просто скопируйте и вставьте, чтобы не было переписывания. – mathguy

+0

Это сработало спасибо .. –

 Смежные вопросы

  • Нет связанных вопросов^_^