Что такое оператор конкатенации строк в Oracle?

126

Что такое оператор конкатенации строк в Oracle SQL?

Есть ли какие-нибудь "интересные" функции, над которыми я должен быть осторожен?

(Это кажется очевидным, но я не мог найти предыдущий вопрос, задающий его).

Теги:
plsql
string-concatenation

4 ответа

175
Лучший ответ

Это ||, например:

select 'Mr ' || ename from emp;

Единственная "интересная" функция, о которой я могу думать, заключается в том, что 'x' || null возвращает 'x', а не null, как вы, возможно, ожидаете.

  • 3
    Я ожидаю, что null от логической операции ... не уверен, что когда-либо думал о строковой операции.
  • 1
    Ну, конечно, Oracle рассматривает нуль и '' как одно и то же, а 'x' || '' = 'x' имеет смысл. Но если вы думаете о нуле как о «неопределенном» или «неизвестном», тогда «x» || null может быть любой строкой, начинающейся с 'x', и поэтому сама является "неизвестной"!
Показать ещё 3 комментария
48

Там также concat, но он не используется значительно

select concat('a','b') from dual;
  • 5
    это намного лучше, чем || условное обозначение. используя || просто сбивает с толку, как и при использовании другого языка ||.
  • 0
    Я предпочитаю concat() || для ясности.
Показать ещё 6 комментариев
6

Я бы предложил concat при работе с 2 строками, а || когда эти строки больше 2:

select concat(a,b)
  from dual

или

  select 'a'||'b'||'c'||'d'
        from dual
  • 2
    извините, я понимаю, что это было 2 года назад, но почему вы бы предпочли concat(a,b) над a||b ?
  • 0
    || короче, гибче и проще. Посмотрите на его выбор заявления.
4
DECLARE
     a      VARCHAR2(30);
     b      VARCHAR2(30);
     c      VARCHAR2(30);
 BEGIN
      a  := ' Abc '; 
      b  := ' def ';
      c  := a || b;
 DBMS_OUTPUT.PUT_LINE(c);
   END;
 Abc  def

Ещё вопросы

Сообщество Overcoder
Наверх
Меню