Відповіді:
Це ||, наприклад:
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