sql >> Databáze >  >> RDS >> Oracle

Funkce CONCAT() v Oracle

V Oracle je to CONCAT() funkce provádí zřetězení řetězců na svých argumentech. Vrací řetězec, který je výsledkem zřetězení jeho argumentů.

Zřetězení je operace spojování více řetězců end-to-end.

Syntaxe

Syntaxe vypadá takto:

CONCAT(char1, char2)

Kde oba argumenty mohou být libovolného datového typu CHAR , VARCHAR2 , NCHAR , NVARCHAR2 , CLOB nebo NCLOB .

Příklad

Zde je jednoduchý příklad k demonstraci:

SELECT CONCAT('Ponzi', 'Invest')
FROM DUAL;

Výsledek:

   CONCAT('PONZI','INVEST') 
___________________________ 
PonziInvest                

Nulové hodnoty

Zřetězení řetězce pomocí null vrátí řetězec:

SET NULL 'null';

SELECT 
    CONCAT('Ponzi', null),
    CONCAT(null, 'Invest')
FROM DUAL;

Výsledek:

   CONCAT('PONZI',NULL)    CONCAT(NULL,'INVEST') 
_______________________ ________________________ 
Ponzi                   Invest                   

Ale pokud jsou oba argumenty null , výsledkem je null :

SET NULL 'null';

SELECT CONCAT(null, null)
FROM DUAL;

Výsledek:

   CONCAT(NULL,NULL) 
____________________ 
null                

Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null dochází v důsledku SQL SELECT prohlášení.

Můžete však použít SET NULL určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null by měl být vrácen.

Nesprávný počet argumentů

Volání CONCAT() bez předání jakýchkoli argumentů vrátí chybu:

SELECT CONCAT()
FROM DUAL;

Výsledek:

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 předání nesprávného počtu argumentů má za následek chybu:

SELECT CONCAT('Gosh', 'Dang', 'Investments')
FROM DUAL;

Výsledek:

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:

Znaková sada a typ dat

Výsledný řetězec je ve stejné znakové sadě jako první argument, ale jeho datový typ závisí na datových typech argumentů.

Při zřetězení dvou různých datových typů Oracle Database vrátí datový typ, jehož výsledkem je bezztrátový převod. Pokud je tedy jeden z argumentů LOB, vrácená hodnota je LOB. Pokud je jedním z argumentů národní datový typ, pak vrácená hodnota je národní datový typ.

Příklady:

  • CONCAT (CLOB , NCLOB ) vrátí NCLOB
  • CONCAT (NCLOB , NCHAR ) vrátí NCLOB
  • CONCAT (NCLOB , CHAR ) vrátí NCLOB
  • CONCAT (NCHAR , CLOB ) vrátí NCLOB

  1. Změna výchozího formátu data a času v jedné databázi na serveru SQL Server

  2. Odstraňte duplikát z tabulky

  3. Sledování vysoké dostupnosti pro PostgreSQL pomocí Heartbeat

  4. Jak opravit "Pro hromadnou sadu řádků v klauzuli from musí být zadán název korelace." v SQL Server