Odpowiedzi:
Jest to ||na przykład:
select 'Mr ' || ename from emp;
Jedyną „interesującą” funkcją, o której 'x' || nullprzychodzi mi do głowy 'x', jest to, że powraca , a nie nulltak, jak można by się spodziewać.
||w Oracle nie jest operatorem logicznym, dlatego 'x'||nullzwraca x.
AND, NOTitp wtedy oczywiście ||nie jest operator logiczny. Ale co to ma wspólnego z 'x'||nullpowrotem x? n+nullzwraca null, więc jest +operatorem logicznym?
Jest też concat, ale nie jest używany zbyt często
select concat('a','b') from dual;
CONCATjest również kompatybilny z innymi systemami DBMS (przynajmniej MySQL i Postgres).
nvl().)
CONCATjest 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 YYYYMMDDz YYYY-MM-DDnastępujących (tj. Bez konwersji do formatu daty):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD