W Oracle CONCAT()
funkcja wykonuje konkatenację ciągów na swoich argumentach. Zwraca ciąg, który wynika z połączenia jego argumentów.
Konkatenacja to operacja łączenia wielu ciągów od końca do końca.
Składnia
Składnia wygląda tak:
CONCAT(char1, char2)
Gdzie oba argumenty mogą być dowolnymi typami danych CHAR
, VARCHAR2
, NCHAR
, NVARCHAR2
, CLOB
lub NCLOB
.
Przykład
Oto prosty przykład do zademonstrowania:
SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;
Wynik:
CONCAT('PONZI','INVEST') ___________________________ PonziInvest
Wartości puste
Łączenie ciągu z null
zwraca ciąg:
SET NULL 'null';
SELECT
CONCAT('Ponzi', null),
CONCAT(null, 'Invest')
FROM DUAL;
Wynik:
CONCAT('PONZI',NULL) CONCAT(NULL,'INVEST') _______________________ ________________________ Ponzi Invest
Ale jeśli oba argumenty są null
, wynik to null
:
SET NULL 'null';
SELECT CONCAT(null, null)
FROM DUAL;
Wynik:
CONCAT(NULL,NULL) ____________________ null
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null
występuje w wyniku polecenia SQL SELECT
oświadczenie.
Możesz jednak użyć SET NULL
aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null
należy zwrócić.
Nieprawidłowa liczba argumentów
Wywołanie CONCAT()
bez przekazywania żadnych argumentów zwraca błąd:
SELECT CONCAT()
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT CONCAT() FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00938: not enough arguments for function 00938. 00000 - "not enough arguments for function" *Cause: *Action:
A przekazanie niewłaściwej liczby argumentów skutkuje błędem:
SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;
Wynik:
Error starting at line : 1 in command - SELECT CONCAT('Gosh', 'Dang', 'Investments') FROM DUAL Error at Command Line : 1 Column : 8 Error report - SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments" *Cause: *Action:
Zestaw znaków i typ danych
Wynikowy ciąg ma taki sam zestaw znaków jak pierwszy argument, jednak jego typ danych zależy od typów danych argumentów.
Podczas łączenia dwóch różnych typów danych Oracle Database zwraca typ danych, który powoduje bezstratną konwersję. Dlatego jeśli jednym z argumentów jest LOB, to zwracaną wartością jest LOB. Jeśli jeden z argumentów jest krajowym typem danych, zwracana wartość jest krajowym typem danych.
Przykłady:
CONCAT
(CLOB
,NCLOB
) zwracaNCLOB
CONCAT
(NCLOB
,NCHAR
) zwracaNCLOB
CONCAT
(NCLOB
,CHAR
) zwracaNCLOB
CONCAT
(NCHAR
,CLOB
) zwracaNCLOB