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

Write pipe delimited column names in 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;

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

在创建中 Table:

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

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

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;

希望对您有所帮助:-)