【问题标题】:SQLPLUS SPOOL - TO_CHAR on NUMBER field adding a trailing spaceSQLPLUS SPOOL - NUMBER 字段上的 TO_CHAR 添加尾随空格
【发布时间】:2019-03-21 11:22:50
【问题描述】:

您好,我正在使用 sql 脚本通过 spool 命令提取文件中的数据。 我正在将一列数字转换为 to_CHAR 并在末尾添加一个额外的空格。我使用 FM0000 作为格式,但不确定为什么在将数字转换为字符时会添加尾随空格。

我在脚本中使用以下内容

SET SPACE 0
SET LINESIZE 1000
SET TRIMSPOOL ON
--SET TRIMOUT ON
SET TERMOUT OFF
SET PAGESIZE 0
SET ECHO OFF
SET FEEDBACK OFF
SET HEADING OFF
SPOOL /u05/oracle/loadarea/Paragon/iib/data/rdrmst.dat

SELECT TO_CHAR(RDRMST_ODOMETER,'FM000000') FROM TABLE

请告诉我

【问题讨论】:

    标签: sql spool trailing


    【解决方案1】:

    试试:

    SELECT LTRIM(RTRIM(TO_CHAR(RDRMST_ODOMETER,'FM000000'))) FROM TABLE
    

    LTRIM - 删除前导空格

    RTRIM - 删除尾随空格

    【讨论】:

    • 使用 FM 格式掩码无需修剪,但您可以只使用 TRIM( ),因为它会删除前导和尾随空格。
    【解决方案2】:

    当使用 TO_CHAR() 将数字转换为固定宽度的字符串时,空格是符号。处理它的正确方法是像您一样使用 Format Mask 格式。考虑一下:

    SQL> SELECT '['||TO_CHAR(4000,'0009')||']'    test1,
                '['||TO_CHAR(-4000,'0009')||']'   test2,
                '['||TO_CHAR(4000,'FM0009')||']'  test3,
                '['||TO_CHAR(-4000,'FM0009')||']' test4
         FROM dual;
    
    TEST1   TEST2   TEST3   TEST4
    ------- ------- ------- -------
    [ 4000] [-4000] [4000]  [-4000]
    
    SQL>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-12
      • 2012-04-16
      • 2010-12-24
      • 1970-01-01
      • 2014-04-25
      相关资源
      最近更新 更多