Qual é o operador de concatenação de strings no Oracle SQL?
Existem recursos "interessantes" com os quais devo ter cuidado?
(Isso parece óbvio, mas não consegui encontrar uma pergunta anterior).
Qual é o operador de concatenação de strings no Oracle SQL?
Existem recursos "interessantes" com os quais devo ter cuidado?
(Isso parece óbvio, mas não consegui encontrar uma pergunta anterior).
Respostas:
É
||
, por exemplo:A única característica "interessante" em que consigo pensar é que
'x' || null
retorna'x'
, nãonull
como você pode esperar.fonte
||
no Oracle não é um operador lógico, portanto,'x'||null
retornax
.AND
,NOT
etc, então é claro que||
não é um operador lógico. Mas o que isso tem a ver com o'x'||null
retornox
?n+null
retorna nulo, então é+
um operador lógico?Há também concat, mas não se acostuma muito
fonte
CONCAT
também é compatível com outros DBMSes (pelo menos MySQL e Postgres).nvl()
.)CONCAT
também está disponível no Microsoft SQL Server 2012 e posteriores . CONCAT, embora não padrão, é definitivamente o caminho a percorrer, se você deseja que seu código seja portátil. (||
É o operador padrão real ANSI, embora você não saberia que, olhando para o apoio para ele!)Eu sugeriria concat ao lidar com 2 strings e || quando essas cadeias são mais de 2:
ou
fonte
concat(a,b)
maisa||b
?saída :: abc def
fonte
Usando
CONCAT(CONCAT(,),)
funcionou para mim ao concatenar mais de duas strings.Meu problema exigia trabalhar com seqüências de datas (apenas) e criar a
YYYYMMDD
partir daYYYY-MM-DD
seguinte (ou seja, sem converter para o formato de data):fonte