如何在查询中添加制表符

时间:2018-10-04 17:32:39

标签: sql oracle output-formatting

我写了3个查询:

   select column1 from table_name1 where -- conditions) 
   ||' TEXT2: '|| (select column2 from table_name2 where  -- conditions) 
   ||' TEXT3: '|| (select column3 from table_name3 where  -- conditions)

这似乎有效。输出如下:

column1 'TEXT2:' column2 'TEXT3:' column3

我尝试使用CHR(09),但是我认为我不能正确使用它,或者它不能与我们的系统一起使用- 3个select语句是EAS系统中内部查询的一部分( -企业应用软件)-我尝试使用query1||CHR(09)||query2这种格式,但是没有将tab放入输出中。

预期的输出行数:

'TEXT1:' column1||tab character||'TEXT2:' column2||tab character||'TEXT3:' column3

也许我应该尝试使用lpad(' ',8)来添加空格?

我如何实现预期的输出?

2 个答案:

答案 0 :(得分:0)

请尝试以下操作:

((从条件中的table_name1中选择'TEXT1:'|| column1)|| CHR(09)||'TEXT2:'||(从条件中的table_name2中选择column2)||'CHR(09)||' TEXT3:'||(从有条件的table_name3中选择column3)

答案 1 :(得分:0)

假设所有3列的类型均为text(VARCHAR2/CHAR),则可以先执行UNION ALL,然后应用LISTAGG作为分隔符的CHR(9)

SELECT LISTAGG(text 
               || ': ' 
               || col, CHR(9)) 
         within GROUP( ORDER BY text ) 
FROM   (SELECT column1 AS col, 
               'TEXT1' AS text 
        FROM   table_name1 --where conditions 
        UNION ALL 
        SELECT column2 AS col, 
               'TEXT2' AS text 
        FROM   table_name2 --where conditions 
        UNION ALL 
        SELECT column3 AS col, 
               'TEXT3' AS text 
        FROM   table_name3 --where conditions    
       );