Qu'est-ce que l'opérateur de concaténation de chaînes dans Oracle SQL?
Y a-t-il des fonctionnalités "intéressantes" dont je devrais faire attention?
(Cela semble évident, mais je n'ai pas trouvé de question précédente le posant).
Qu'est-ce que l'opérateur de concaténation de chaînes dans Oracle SQL?
Y a-t-il des fonctionnalités "intéressantes" dont je devrais faire attention?
(Cela semble évident, mais je n'ai pas trouvé de question précédente le posant).
Réponses:
C'est ||
, par exemple:
select 'Mr ' || ename from emp;
La seule caractéristique «intéressante» à laquelle je puisse penser est que cela 'x' || null
revient 'x'
, pas null
comme on pourrait peut-être s'y attendre.
||
dans Oracle n'est pas un opérateur logique, par conséquent, 'x'||null
retourne x
.
AND
, NOT
etc. alors bien sûr ||
n'est pas un opérateur logique. Mais qu'est-ce que cela doit être dû au 'x'||null
retour x
? n+null
renvoie null, donc +
un opérateur logique?
Il y a aussi du concat, mais il ne s'utilise pas beaucoup
select concat('a','b') from dual;
CONCAT
est également compatible avec d'autres SGBD (au moins MySQL et Postgres).
nvl()
.)
CONCAT
est également disponible dans Microsoft SQL Server 2012 et versions ultérieures . CONCAT, bien que non standard, est certainement la voie à suivre si vous voulez que votre code soit portable. ( ||
est l'opérateur standard ANSI réel, même si vous ne le sauriez pas en regardant le support!)
Je suggérerais concat lorsqu'il s'agit de 2 chaînes, et || lorsque ces chaînes sont supérieures à 2:
select concat(a,b)
from dual
ou
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
plus a||b
?
L'utilisation a CONCAT(CONCAT(,),)
fonctionné pour moi lors de la concaténation de plus de deux chaînes.
Mon problème nécessitait de travailler avec des chaînes de date (uniquement) et de créer à YYYYMMDD
partir YYYY-MM-DD
de ce qui suit (c'est-à-dire sans conversion au format de date):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD