Что такое оператор конкатенации строк в Oracle SQL?
Есть ли какие-нибудь «интересные» особенности, о которых мне следует позаботиться?
(Это кажется очевидным, но я не мог найти предыдущий вопрос, задающий его).
Что такое оператор конкатенации строк в Oracle SQL?
Есть ли какие-нибудь «интересные» особенности, о которых мне следует позаботиться?
(Это кажется очевидным, но я не мог найти предыдущий вопрос, задающий его).
Ответы:
Это
||
, например:Единственная «интересная» особенность, о которой я могу подумать, - это
'x' || null
возврат'x'
, неnull
такой , как вы, возможно, ожидаете.источник
||
в Oracle не является логическим оператором, поэтому'x'||null
возвращаетx
.AND
иNOT
т. д., то, конечно,||
это не логический оператор. Но какое это имеет отношение к'x'||null
возвращениюx
?n+null
возвращает ноль, так+
что логический оператор?Есть также конкат, но он мало привык
источник
CONCAT
также совместим с другими СУБД (по крайней мере, MySQL и Postgres).nvl()
.)CONCAT
также доступен в Microsoft SQL Server 2012 и более поздних версиях . CONCAT, хотя и нестандартный, безусловно, является подходящим вариантом, если вы хотите, чтобы ваш код был переносимым. (||
является действительным стандартным оператором ANSI, хотя вы не узнаете об этом, если посмотрите на его поддержку!)Я бы предложил concat при работе с 2 строками, а || когда этих строк больше 2:
или
источник
concat(a,b)
болееa||b
?output :: Abc def
источник
Использование
CONCAT(CONCAT(,),)
сработало для меня при объединении более двух строк.Моя проблема требовала работы со строками даты (только) и создания
YYYYMMDD
изYYYY-MM-DD
следующего (т.е. без преобразования в формат даты):источник