Объединить несколько значений столбцов в один столбец в одной строке Oracle SQL без потери цветового форматирования

#sql #oracle

#sql #Oracle

Вопрос:

У меня есть несколько столбцов, которые необходимо объединить в один столбец, но я не хочу терять цветовое форматирование для отдельной ячейки столбца

 Table name: report
colNum col1 col2 col3
1      a    b    c 
2      b    a    b 

All b are in red color
All a are in Green color
All c are in black color

After
ColNum NewCol
1     a b c
2     b a b

I have used the below query 
select colnum, col1||' '||col2||' '||col3 as NewCol
from report

Issue is color formatting is lost after the merge  

После

Комментарии:

1. База данных Oracle хранит цвет не для значений, а только для данных. Пожалуйста, уточните аспект цвета.

2. эти ‘a’, ‘b’ ‘c’ похожи на легенды. таким образом, просмотр цвета текста покажет данные визуально. Если это невозможно, попробуйте увидеть что-то еще.

3. Возможно, значения имеют некоторые HTML-теги / форматирование, которые вы не включаете?

4. Не имеет значения, что означают цвета. Как сказал @TheImpaler, база данных ничего об этом не знает. Цвета отображаемого текста — это то, что делается приложением / клиентской программой. И мы не знаем, что это такое.

Ответ №1:

Как указывали другие в комментариях, в базе данных с данными нет цвета. Цвет, которым отображается информация, зависит от клиента, который вы используете для запроса данных.

Я не верю, что у SQLPlus есть какие-либо параметры раскраски. Если вы используете SQLcl, у Криса Райса (разработчика SQLcl) есть сообщение в блоге, показывающее, как выполнять все виды раскрашивания при использовании SQLcl в качестве клиента. Цветовое оформление SQL Developer можно определить с помощью форматирования в стиле HTML, если столбец начинается с <html> тега (см. Скриншот ниже). Другие инструменты разработки, такие как PL / SQL Developer и Toad, вероятно, имеют свои собственные варианты раскраски, но я с ними не знаком, поэтому вам придется просмотреть их веб-сайт / документацию.

Запрос для разработчика SQL

 WITH
    test_table (colNum,
                col1,
                col2,
                col3)
    AS
        (SELECT 1, 'a', 'b', 'c' FROM DUAL
         UNION ALL
         SELECT 2, 'b', 'a', 'b' FROM DUAL)
SELECT colnum, '<html><font size="5" color="red">'||col1 as col1,
               '<html><font size="5" color="green">'||col2 as col2,
               '<html><font size="5" color="black">'||col3 as col3,
               '<html><font size="5" color="red">'||col1
                  || '<font size="5" color="green"> ' || col2
                  || '<font size="5" color="black"> ' || col3 AS newcol
  FROM test_table;
  

Результат SQL Developer 20.2

Скриншот SQL Developer 20.2 с примером раскраски