Ответы:
Это ||
, например:
select 'Mr ' || ename from emp;
Единственная «интересная» особенность, о которой я могу подумать, - это 'x' || null
возврат 'x'
, не null
такой , как вы, возможно, ожидаете.
||
в Oracle не является логическим оператором, поэтому 'x'||null
возвращает x
.
AND
и NOT
т. д., то, конечно, ||
это не логический оператор. Но какое это имеет отношение к 'x'||null
возвращению x
? n+null
возвращает ноль, так +
что логический оператор?
Есть также конкат, но он мало привык
select concat('a','b') from dual;
CONCAT
также совместим с другими СУБД (по крайней мере, MySQL и Postgres).
nvl()
.)
CONCAT
также доступен в Microsoft SQL Server 2012 и более поздних версиях . CONCAT, хотя и нестандартный, безусловно, является подходящим вариантом, если вы хотите, чтобы ваш код был переносимым. ( ||
является действительным стандартным оператором ANSI, хотя вы не узнаете об этом, если посмотрите на его поддержку!)
Я бы предложил concat при работе с 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