Odpowiedzi:
Jest to ||
na przykład:
select 'Mr ' || ename from emp;
Jedyną „interesującą” funkcją, o której 'x' || null
przychodzi mi do głowy 'x'
, jest to, że powraca , a nie null
tak, jak można by się spodziewać.
||
w Oracle nie jest operatorem logicznym, dlatego 'x'||null
zwraca x
.
AND
, NOT
itp wtedy oczywiście ||
nie jest operator logiczny. Ale co to ma wspólnego z 'x'||null
powrotem x
? n+null
zwraca null, więc jest +
operatorem logicznym?
Jest też concat, ale nie jest używany zbyt często
select concat('a','b') from dual;
CONCAT
jest również kompatybilny z innymi systemami DBMS (przynajmniej MySQL i Postgres).
nvl()
.)
CONCAT
jest również dostępny w Microsoft SQL Server 2012 i nowszych . CONCAT, choć niestandardowy, jest zdecydowanie najlepszym rozwiązaniem, jeśli chcesz, aby kod był przenośny. ( ||
Jest rzeczywista średnia operator ANSI, choć nie wiem, to patrząc na wsparcie dla niego!)
Sugerowałbym konkatację, gdy mamy do czynienia z 2 ciągami i || kiedy te ciągi są większe niż 2:
select concat(a,b)
from dual
lub
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
więcej a||b
?
Używanie CONCAT(CONCAT(,),)
działało w przypadku łączenia więcej niż dwóch ciągów.
Mój problem wymagał pracy z ciągami daty (tylko) i tworzenia YYYYMMDD
z YYYY-MM-DD
następujących (tj. Bez konwersji do formatu daty):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD