Итак, я в основном хочу отобразить это (целая строка в столбце ONE):
Мне нравится [тип колонки] торт с [глазом обледенения] и [столбец фруктов].
Результат должен быть:
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, который делает ([column] "some text" [column]) "new_column_name";
Что я должен знать?
У вас есть два варианта конкатенации строк в 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)
Использование ||
example:
'I like ' || t.type_desc_column || ' cake with ' || t.icing_desc_column || ' and a ' || t.fruit_desc_column
Вы попробовали оператор ||?
Ниже для меня работает запрос @Oracle 10G ----
select PHONE, CONTACT, (ADDR1 || '-' || ADDR2 || '-' || ADDR3) as Address
from CUSTOMER_DETAILS
where Code='341';
O/P -
1111 [email protected] 4th street-capetown-sa
выберите 'Мне нравится' || type_column || 'с помощью ect....
Попробуйте следующее:
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".
Начиная с Oracle 11, появилась новая функция LISTAGG, которая делает то же самое, что и вы здесь.
Пример:
SELECT LISTAGG(last_name, '; ') WITHIN GROUP (ORDER BY hire_date, last_name) "Emp_list", MIN(hire_date) "Earliest" FROM employees WHERE department_id = 30; Emp_list Earliest ------------------------------------------------------------ --------- Raphaely;Khoo; Tobias; Baida; Himuro; Colmenares 07-DEC-02