Oracle LPAD () функция - PullRequest
       0

Oracle LPAD () функция

0 голосов
/ 25 марта 2020

Вопрос: Для каждого описания детали, начинающегося с буквы «b», перечислите описание детали, а затем добавьте описание каждой детали с «+» слева, чтобы все описания деталей имели длину 15 символов.

И я написал как

  SELECT 
   LENGTH(PART_PART_DESCRIPTION),  LPAD(PART_PART_DESCRIPTION,15,'+'),
   PART_PART_DESCRIPTION, CONCAT('+', PART_PART_DESCRIPTION) FROM PART
   WHERE SUBSTR(PART_PART_DESCRIPTION,1,1)='B'

, но на выходе не отображается 15 '+' с левой стороны.

Вот таблица вывода

Ответы [ 2 ]

0 голосов
/ 25 марта 2020

Ваш столбец PART_PART_DESCRIPTION имеет тип данных CHAR с длиной данных 285. поэтому BLENDER в вашем столбце имеет общую длину 285 (7 + 278 trailing spaces). вот почему вы столкнулись с проблемой.

См. это:

SQL> select LPAD(CAST('BLENDER' AS CHAR(285)),15,'+') FROM DUAL;

LPAD(CAST('BLENDER'ASCHAR(285)),15,'+')
------------------------------------------------------------
BLENDER

SQL> select LPAD('BLENDER',15,'+') FROM DUAL;

LPAD('BLENDER',
---------------
++++++++BLENDER

SQL>

Вам необходимо использовать TRIM, чтобы правильно использовать столбец типа данных LPAD on CHAR Что-то вроде следующее:

LPAD(trim(PART_PART_DESCRIPTION),15,'+')
0 голосов
/ 25 марта 2020

Скорее всего, ваши данные заполнены пробелами. Попробуйте это

 SELECT 
   LENGTH(PART_PART_DESCRIPTION),  LPAD(TRIM(PART_PART_DESCRIPTION),15,'+'),
   PART_PART_DESCRIPTION, CONCAT('+', PART_PART_DESCRIPTION) FROM PART
   WHERE SUBSTR(PART_PART_DESCRIPTION,1,1)='B'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...