Конкатенация
Функция
Слияние (объединение) символьных строк.
Спецификация
Варианты:
-
< строка >
::=
Синтаксические правила
-
Аргументы функции должны иметь приводимые друг к другу строковые типы данных.
-
< Символьное выражение >может быть задано< 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|