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:La seule caractéristique «intéressante» à laquelle je puisse penser est que cela
'x' || null
revient'x'
, pasnull
comme on pourrait peut-être s'y attendre.la source
||
dans Oracle n'est pas un opérateur logique, par conséquent,'x'||null
retournex
.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
retourx
?n+null
renvoie null, donc+
un opérateur logique?Il y a aussi du concat, mais il ne s'utilise pas beaucoup
la source
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:
ou
la source
concat(a,b)
plusa||b
?sortie :: Abc def
la source
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
partirYYYY-MM-DD
de ce qui suit (c'est-à-dire sans conversion au format de date):la source