Конкатенация строк в Oracle SQL без пробела между ними? - PullRequest
8 голосов
/ 30 октября 2011

Я пытаюсь объединить строки в Oracle.

Вот мой запрос:

insert into dummy values('c'||to_char(10000,'99999'));

Ожидаемый результат:

c10000

Но вывод я получаю с пробелом между 'c' и значением 10000:

c 10000 

Как конкатировать без пробелов?

Ответы [ 2 ]

20 голосов
/ 30 октября 2011

Это проблема не оператора конкатенации, а функции to_char().Попробуйте вместо:

to_char(10000,'FM99999')

Я цитирую руководство здесь :

FM .. Возвращает значение без начальных или конечных пробелов.1011 *

0 голосов
/ 05 июня 2019

Существует два решения:

  1. Префикс форматирования в режиме заполнения ('FM'), который подавляет дополнительный префикс пустого символа для преобразования числа to_char.Я предлагаю этот вариант предпочтительнее, поскольку он интегрирован с форматом to_char и не требует дополнительного вызова функции;
  2. LTRIM возвращаемого значения из преобразования to_char.

В приведенном ниже коде показаны результаты обоих решений:

Select concat('NTA', to_char(1,'FM0000000000000')), 
concat('NTA', ltrim(to_char(1,'0000000000000'))), 
concat('NTA', to_char(1,'0000000000000'))
from dual;

"CONCAT('NTA',TO_CHAR(1,'FM0000000000000'))": "NTA0000000000001" "CONCAT('NTA',LTRIM(TO_CHAR(1,'0000000000000')))": "NTA0000000000001" "CONCAT('NTA',TO_CHAR(1,'0000000000000'))": "NTA 0000000000001"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...