Конкатенация

Функция

Слияние (объединение) символьных строк.

Спецификация
     

Варианты:

  1. < синтаксис >::=
    CONCAT (строка, строка[, …])
  2. < синтаксис >::=
Синтаксические правила
  1. Аргументы функции должны иметь приводимые друг к другу строковые типы данных.

  2. < Символьное выражение > может быть задано < SQL-параметром >, который должен содержать спецификацию типа данных параметра.

    select concat (? (char(10)), ? (char(5)), :param (char(10)));
    123
    456
    789
    |123456789|
    
    select ? (char(10)) + ? (char(5))|| :param (char(10));
    123
    456
    789
    |123456789|
Общие правила
  1. Результатом выполнения функции является объединение символьных строк.

  2. Если одно из < символьных выражений > имеет NULL-значение, результатом будет также NULL-значение.

  3. Если один из аргументов имеет тип VARCHAR, то тип результата приводится к типу VARCHAR(n), где n – сумма длин объединяемых строк.

  4. Если в строковом выражении конкатенации встречается пустая строка '', то она воспринимается как выражение типа CHAR(1) с длиной 1, т.е. одиночный пробел. Если необходимо, чтобы эта пустая строка воспринималась как выражение длины 0, то нужно привести ее к типу VARCHAR: CAST ('' AS VARCHAR).

Примечания

  1. Если ядро СУБД запущено с ключом /COMPATIBILITY=STANDARD, то для значений типа CHAR(n) будут усекаться только концевые пробелы крайней строки.

  2. Если ядро СУБД запущено с ключом /COMPATIBILITY=ORACLE, то результатом конкатенации символьных значений с NULL-значением будет исходная символьная строка (а не NULL-значение).

    Примечание

    Ключ /COMPATIBILITY=ORACLE поддерживается со сборки 6.0.17.92.

Примеры
select '123       ' || cast '123' as varchar(3);
|123       123|

select cast '123       ' as varchar(5) || cast '123' as varchar(3);
|123  123|

select to_char(rownum)||' '||rtrim(firstnam) + ' ' + ltrim(name) from person order by name;
| 1 SYLVIA ADKINSON    |
| 2 ED ADKINSON        |
| 3 ETHEL ADKINSON     |
| 4 FRANCOISE ADKINSON |
| 5 VIRGINIA ADKINSON  |
…

update tst set vc=cast vc+'123' as varchar(50);

select concat('Сегодня: ', to_char(sysdate,'dd.mm.yyyy'));
|Сегодня: 14.12.2007|