Oracle SQL, объединить несколько столбцов + добавить текст

104

Итак, я в основном хочу отобразить это (всю строку в ОДНОМ столбце):

Мне нравится торт [тип колонки] с [колонкой глазури] и [колонкой фруктов].

Результат должен быть:

Cake_Column
----------------

I like chocolate cake with whipped_cream and a cherry.

I like strawberry cake with vanilla_cream and a lemon_slice.

etc.

etc.

Мне нужен какой-то оператор TO_CHAR, который выполняет ([столбец] «некоторый текст» [столбец]) «новое_столбец_имя»;

Что я должен знать?

Thundordan
источник

Ответы:

147

У вас есть два варианта объединения строк в Oracle:

Пример CONCAT:

CONCAT(
  CONCAT(
    CONCAT(
      CONCAT(
        CONCAT('I like ', t.type_desc_column), 
        ' cake with '), 
      t.icing_desc_column),
    ' and a '),
  t.fruit_desc_column)

Используя ||пример:

'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
OMG Пони
источник
Это действительно медленно (запускать, а не печатать). Есть ли способ лучше?
Патрик Салапски
1
Это так уродливо по отношению к СУБД очень старой марки. Почему Oracle не поддерживает Concat с множеством аргументов? Однако, благодаря Шанкару, есть || оператор.
Скотт Чу
36
select 'i like' || type_column || ' with' ect....
Дэни
источник
1
Большое спасибо за этот ответ. Мне нравится "||" так как это упрощает обслуживание SQL-запроса.
Джейсон ТЕПОРТЕН
25

Ниже запрос работает для меня @Oracle 10G ----

select PHONE, CONTACT, (ADDR1 ||  '-' || ADDR2 || '-' || ADDR3) as Address
from CUSTOMER_DETAILS
where Code='341'; 

O / P -

1111 abc@gmail.com 4-я улица-кейптаун-са

Chaits
источник
10

Oracle/PLSQL CONCATФункция позволяет соединить две строки вместе.

CONCAT( string1, string2 )

строка1

Первая строка для объединения.

строка2

Вторая строка для объединения.

Например

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake FROM table;
Дулит Де Коста
источник
8

Попробуй это:

SELECT 'I like ' || type_column_name || ' cake with ' || 
icing_column_name || ' and a ' fruit_column_name || '.' 
AS Cake_Column FROM your_table_name;

Он должен объединить все эти данные в одну запись столбца с именем «Cake_Column».

SandPiper
источник