在teradata中写入管道分隔的列名称

时间:2017-10-09 15:30:17

标签: sql teradata

我使用以下查询生成管道分隔文件,但我也想要管道分隔列名。你能帮帮我吗。

select  cast (sample_dt||'|'||trim(trailing '.' from trim(leading ' ' from acct_id))||'|'||name1||'|'||ent_sub_lob||'|'||app_dt||'|'||home_phn_num||'|'||city_1_name||'|'||geo_st_cd||'|'||surveyid||'|'||study_type||'|'||ent_lob||'|'||channel||'|'||market_C||'|'||merchant_id as char(300))
from  ud.testing;

1 个答案:

答案 0 :(得分:0)

如果我理解正确,您需要表格列名称或当前派生列,即cast (sample_dt||'|'||trim(trailing '.' from.....名称为|分隔。在这两种情况下,您只需要在列名称周围添加双引号"",如下所示。

在创建表格中

create TABLE t1(
"x1 | y1" char(300)
);

您可以使用show命令检查已创建的表定义。

show TABLE t1;

CREATE SET TABLE t1 ,NO FALLBACK ,
     NO BEFORE JOURNAL,
     NO AFTER JOURNAL,
     CHECKSUM = DEFAULT,
     DEFAULT MERGEBLOCKRATIO
     (
      "x1 | y1" CHAR(300) CHARACTER SET LATIN NOT CASESPECIFIC)
PRIMARY INDEX ( "x1 | y1" );

在派生列中:

SELECT 'abc'||' | '|| 'zyc' as "Test | ABC";

Test | ABC
----------
abc | zyc

您当前的查询将成为。

SELECT CAST (sample_dt||'|'||trim(TRAILING '.'
                                  FROM trim(LEADING ' '
                                            FROM acct_id))||'|'||name1||'|'||ent_sub_lob||'|'||app_dt||'|'||home_phn_num||'|'||city_1_name||'|'||geo_st_cd||'|'||surveyid||'|'||study_type||'|'||ent_lob||'|'||channel||'|'||market_C||'|'||merchant_id AS char(300)) AS "Pipe | Seperated"
FROM ud.testing;

希望它会有所帮助: - )