Co to jest operator konkatenacji ciągów w Oracle SQL?
Czy są jakieś „interesujące” funkcje, na które powinienem uważać?
(Wydaje się to oczywiste, ale nie mogłem znaleźć poprzedniego pytania).
Co to jest operator konkatenacji ciągów w Oracle SQL?
Czy są jakieś „interesujące” funkcje, na które powinienem uważać?
(Wydaje się to oczywiste, ale nie mogłem znaleźć poprzedniego pytania).
Odpowiedzi:
Jest to
||
na przykład:Jedyną „interesującą” funkcją, o której
'x' || null
przychodzi mi do głowy'x'
, jest to, że powraca , a nienull
tak, jak można by się spodziewać.źródło
||
w Oracle nie jest operatorem logicznym, dlatego'x'||null
zwracax
.AND
,NOT
itp wtedy oczywiście||
nie jest operator logiczny. Ale co to ma wspólnego z'x'||null
powrotemx
?n+null
zwraca null, więc jest+
operatorem logicznym?Jest też concat, ale nie jest używany zbyt często
źródło
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:
lub
źródło
concat(a,b)
więceja||b
?wyjście :: Abc def
źródło
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
zYYYY-MM-DD
następujących (tj. Bez konwersji do formatu daty):źródło