Відповіді:
Це ||
, наприклад:
select 'Mr ' || ename from emp;
Єдина «цікава» особливість, яку я можу придумати, - це те, що 'x' || null
повертається 'x'
, а не так, null
як можна було б очікувати.
||
в Oracle не є логічним оператором, тому 'x'||null
повертається x
.
AND
і NOT
т.д., то, звичайно, ||
це не логічний оператор. Але з чим це пов'язане з 'x'||null
поверненням x
? n+null
повертає null, так це +
логічний оператор?
Також є лаконічні, але вони не дуже звикають
select concat('a','b') from dual;
CONCAT
також сумісний з іншими СУБД (принаймні MySQL та Postgres).
nvl()
.)
CONCAT
також доступний в Microsoft SQL Server 2012 і далі . CONCAT, хоч і нестандартний, - це, безумовно, шлях, якщо ви хочете, щоб ваш код був переносним. ( ||
це фактичний стандартний оператор ANSI, хоча ви цього не знаєте, дивлячись на підтримку!)
Я б запропонував конкомат, коли йдеться про 2 рядки та || коли цих рядків більше 2:
select concat(a,b)
from dual
або
select 'a'||'b'||'c'||'d'
from dual
concat(a,b)
більш a||b
?
Використання CONCAT(CONCAT(,),)
працювало для мене при об'єднанні більше двох рядків.
Моя проблема вимагала роботи з рядками дати (лише) та створення YYYYMMDD
з YYYY-MM-DD
наступного (тобто без перетворення у формат дати):
CONCAT(CONCAT(SUBSTR(DATECOL,1,4),SUBSTR(DATECOL,6,2)),SUBSTR(DATECOL,9,2)) AS YYYYMMDD