我只想使用Unix shell脚本在.txt文件中编写查询输出。以下是我的代码:
SET PAGESIZE 20000
SET COLSEP ","
SET LINESIZE 385
SET NUMWIDTH 300
SET WRAP OFF
SET FEEDBACK OFF
SET UNDERLINE OFF
SET ECHO OFF
SET TRIMSPOOL OFF
SET TAB OFF
COLUMN NSC Format a8
COLUMN STATUS Format a6
COLUMN GEO_CD Format a6
COLUMN COUNTRY Format a7
COLUMN LATA Format a4
COLUMN COMMUNITY_NAME a14
COLUMN COUNTY a6
COLUMN STREET_NUM1 a11
COLUMN POSTAL_CD a9
SPOOL NRM1.txt
SELECT GEO_SITE_CD||GEOP_SITE_CD||NW_SITE_CD NSC,STUS_CD STATUS,GEOP_SITE_CD GEO_CD,CTRY_CD COUNTRY,GEO_LATA_CD LATA,NVL(CURR_GEO_SITE_NME,GEO_SITE_NME) COMMUNITY_NAME,
CNTY_NME COUNTY,'"'||RPAD(NVL(TRIM(ADR_STREET_NBR),' '),15,' ')||'"' STREET_NUM1,
PSTL_CD POSTAL_CD
FROM CLONE_NW_SITE
WHERE CTRY_CD IN ('USA','PRI','VRI')
AND ROWNUM < 100
ORDER BY NSC;
SPOOL OFF
输出如下:
NSC ,STATUS,GEO_CD,COUNTRY,LATA,COMMUNITY_NAME ,COUNTY ,STREET_NUM1 ,POSTAL_CD
ABITPR01,A ,PR ,PRI , ,AIBONITO (AIBONITO) ,AIBONITO ," " ,00705
所需输出如下所示:
NSC ,STATUS,GEO_CD,COUNTRY,LATA,COMMUNITY_NAME ,COUNTY ,STREET_NUM1,POSTAL_CD
ABITPR01,A ,PR ,PRI , ,AIBONITO (AIBONITO) ,AIBONITO ," ",00705
对于STREET_NUM1 - 我使用了RPAD / NVL,它改变了标题大小并在值&#34;之后&#34; - 它有45个额外的空间。我不想要那些。
欢迎任何建议。提前谢谢。
答案 0 :(得分:0)
看起来ADR_STREET_NBR
列中已存在的值超出了您所需的长度,这导致了此问题。 <{1}}之后使用SUBSTR
功能,它可以解决您的问题。
另一条评论是RPAD
使用NVL
代替''
。当你没有价值时,' '
会处理填充空格。