Cos'è l'operatore di concatenazione di stringhe in Oracle SQL?
Ci sono delle caratteristiche "interessanti" che dovrei fare attenzione?
(Questo sembra ovvio, ma non sono riuscito a trovare una domanda precedente che lo ponga).
Cos'è l'operatore di concatenazione di stringhe in Oracle SQL?
Ci sono delle caratteristiche "interessanti" che dovrei fare attenzione?
(Questo sembra ovvio, ma non sono riuscito a trovare una domanda precedente che lo ponga).
Risposte:
Ad ||
esempio:
select 'Mr ' || ename from emp;
L'unica caratteristica "interessante" a cui riesco a pensare è che 'x' || null
ritorni'x'
, non null
come forse ti aspetteresti.
||
in Oracle non è un operatore logico, quindi, 'x'||null
ritorna x
.
AND
, NOT
ecc. allora ovviamente ||
non è un operatore logico. Ma che cosa ha a che fare con il 'x'||null
ritorno x
? n+null
restituisce null, quindi è +
un operatore logico?
C'è anche concat, ma non viene molto usato
select concat('a','b') from dual;
CONCAT
è anche compatibile con altri DBMS (almeno MySQL e Postgres).
nvl()
.)
CONCAT
è disponibile anche in Microsoft SQL Server 2012 e versioni successive . CONCAT, sebbene non standard, è sicuramente la strada da percorrere se vuoi che il tuo codice sia portatile. ( ||
è l'effettivo operatore standard ANSI, anche se non lo sapresti guardando il supporto per questo!)
Suggerirei concat quando si tratta di 2 stringhe e || quando quelle stringhe sono più di 2:
select concat(a,b)
from dual
o
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
sopra a||b
?
L'utilizzo ha CONCAT(CONCAT(,),)
funzionato per me durante la concatenazione di più di due stringhe.
Il mio problema richiesto lavorare con stringhe di data (solo) e la creazione YYYYMMDD
da YYYY-MM-DD
come segue (cioè senza conversione al formato della data):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD