¿Cuál es el operador de concatenación de cadenas en Oracle SQL?
¿Hay alguna característica "interesante" de la que deba tener cuidado?
(Esto parece obvio, pero no pude encontrar una pregunta previa al respecto).
¿Cuál es el operador de concatenación de cadenas en Oracle SQL?
¿Hay alguna característica "interesante" de la que deba tener cuidado?
(Esto parece obvio, pero no pude encontrar una pregunta previa al respecto).
Respuestas:
Es
||
, por ejemplo:La única característica "interesante" que se me ocurre es que
'x' || null
regresa'x'
, nonull
como se podría esperar.fuente
||
en Oracle no es un operador lógico, por lo tanto,'x'||null
devuelvex
.AND
,NOT
etc., por supuesto,||
no es un operador lógico. Pero, ¿qué tiene eso que ver con el'x'||null
regresox
?n+null
devuelve nulo, entonces ¿es+
un operador lógico?También hay concat, pero no se usa mucho
fuente
CONCAT
También es compatible con otros DBMS (al menos MySQL y Postgres).nvl()
)CONCAT
también está disponible en Microsoft SQL Server 2012 y en adelante . CONCAT, aunque no estándar, es definitivamente el camino a seguir si desea que su código sea portátil. (||
es el operador estándar ANSI real, ¡aunque no lo sabrías si buscas el soporte!)Sugeriría concat cuando se trata de 2 cadenas, y || cuando esas cadenas son más de 2:
o
fuente
concat(a,b)
hacerloa||b
?salida :: Abc def
fuente
El uso
CONCAT(CONCAT(,),)
funcionó para mí al concatenar más de dos cadenas.Mi problema requería trabajar con cadenas de fecha (solo) y crear
YYYYMMDD
de laYYYY-MM-DD
siguiente manera (es decir, sin convertir al formato de fecha):fuente