SQLPLUS SPOOL - TO_CHAR в поле NUMBER с добавлением завершающего пробела - PullRequest
0 голосов
/ 16 октября 2018

Привет! Я использую сценарий 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

Пожалуйста, дайте мне знать

Ответы [ 2 ]

0 голосов
/ 16 октября 2018

Пробел для знака, когда TO_CHAR () используется для преобразования числа в символьную строку фиксированной ширины.Правильный способ справиться с этим - использовать формат «Маска формата», как вы делаете.Учтите это:

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>
0 голосов
/ 16 октября 2018

Попробуйте:

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

LTRIM - удаляет начальные пробелы

RTRIM - удаляет завершающие пробелы

...