#sql #oracle #plsql #oracle11g #oracle10g
#sql #Oracle #plsql #oracle11g #oracle10g
Вопрос:
Я запускаю запрос ниже, используя сценарий оболочки для получения данных от oracle.
set heading off;
set COLSEP ",";
set echo off;
set FEEDBACK off;
set pages 0;
set tab off;
set linesize 10000;
SELECT nvl(lpad(ID1,9,' '),' '),
ID2,
lpad(ID3,11,' '),
nvl(ID4,' ')
FROM ENTMST.T_DB_ENTITY;
quit;
И получение вывода, как показано ниже.
197329691 ,197329691, 197329691 ,197329691
например, 3-й столбец lpad работает нормально для значения 197329691, но после этого я получаю дополнительное пространство. Как я могу их удалить?
Комментарии:
1. каков результат
SELECT ID1, ID2, ID3, ID4 FROM ENTMST.T_DB_ENTITY
простой проверки нормального вывода2. Каков тип данных полей идентификатора?
CHAR
возможно?3. Тип данных — char(9), а обычный вывод приведен ниже. 197329691,197329691,197329691,197329691
4. @user3760704 Какую СУБД вы используете? запрос кажется правильным.
5. Я запускаю его через команду sqlplus в oracle.
Ответ №1:
Добавьте псевдонимы для каждого столбца:
SELECT NVL(LPAD(ID1,9,' '),' ') ID1,
ID2 ID2,
LPAD(ID3,11,' ') ID3,
NVL(ID4,' ') ID4
FROM ENTMST.T_DB_ENTITY;
Установите ширину столбца sql plus перед оператором select:
COL id1 FORMAT A9
COL id2 FORMAT A9
COL id3 FORMAT A9
COL id4 FORMAT A9
Ответ №2:
вы могли бы завернуть его вот так:
RTRIM( lpad(ID3,11,' '))
Комментарии:
1. RTRIM не помогает. получение того же результата.