Конкатенация (CONCAT)
Функция
Слияние (объединение) символьных строк.
Спецификация
Варианты:
-
<строка>
::=
Синтаксические правила
-
Аргументы функции должны иметь приводимые друг к другу строковые типы данных.
-
<Символьное выражение>может быть задано<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|
Общие правила
-
Результатом выполнения функции является объединение символьных строк.
-
Если одно из
<символьных выражений>имеет NULL-значение, результатом будет также NULL-значение. -
Если один из аргументов имеет тип
VARCHAR, то тип результата приводится к типуVARCHAR(n), гдеn– сумма длин объединяемых строк. -
Если в строковом выражении конкатенации встречается пустая строка '', то она воспринимается как выражение типа
CHAR(1)с длиной1, т.е. одиночный пробел. Если необходимо, чтобы эта пустая строка воспринималась как выражение длины0, то нужно привести ее к типуVARCHAR:CAST ('' AS VARCHAR).
Примечания
-
Если ядро СУБД запущено с ключом
/COMPATIBILITY=STANDARD, то для значений типаCHAR(n)будут усекаться только концевые пробелы крайней строки. -
Если ядро СУБД запущено с ключом
/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|