Oracle SQL, об'єднайте кілька стовпців + додайте текст


102

Тому я в основному хочу відобразити це (весь рядок в ОДНОМУ стовпчику):

Мені подобається торт [type column] з [колонка глазурі] та [колонка з фруктами].

Результатом має бути:

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, який робить ([стовпець] "деякий текст" [стовпець]) "новий_колончик_імен";

Що я повинен знати?

Відповіді:


145

У вас є два варіанти об'єднання рядків в 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

Це дійсно повільно (для запуску, не дуже для друку). Чи є кращий спосіб?
Патрік Шалапський

1
Це так некрасиво, що стосується дуже старовинної СУБД. Чому Oracle не підтримує багато аргументів-версій Concat? Однак, завдяки Шанкару, є || оператор.
Скотт Чу


36
select 'i like' || type_column || ' with' ect....

1
Дуже дякую за цю відповідь. Мені подобається '||' оскільки це полегшує підтримку запиту SQL.
Jason TEPOORTEN

25

Нижче запит працює для мене @Oracle 10G ----

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

O / P -

1111 abc@gmail.com 4-та вулиця-місто-місто


10

Oracle/PLSQL CONCATФункція дозволяє з'єднати два рядки разом.

CONCAT( string1, string2 )

string1

Перший рядок для об'єднання.

string2

Другий рядок для об'єднання.

Напр

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".

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.