Как добавить ведущий ноль в число в запросе Oracle SQL?

Я получаю столбец с именем Removal_count в своем запросе с помощью функции COUNT (). В наборе результатов тип данных для Removal_count - BIGDECIMAL. Я хочу преобразовать число в пять цифр. Поэтому, если значение меньше пяти цифр, оно должно быть представлено начальными нулями.

Например, 1) Если количество удалений равно 540, отобразите 00540
    2) Если количество удалений равно 60, отобразите 00060

Если количество удалений равно целочисленному /строковому значению, я могу добавить начальные нули с помощью выражения java:

--if removal_count is integer--
String.format("%05d",removal_count)

--if removal_count is string--
("00000"+removal_count).subString(removal_count.length())

Можем ли мы преобразовать remove_count в строку или целое число (из большого десятичного числа), чтобы я мог использовать данное выражение java? Или есть ли способ добавить начальные нули в сам запрос?

12 голосов | спросил Madhusudan 29 J000000Wednesday15 2015, 10:08:12

3 ответа


0

Вы можете сделать это двумя способами.

Метод 1

Использование LPAD .

Например,

SQL> WITH DATA(num) AS(
  2  SELECT 540 FROM dual UNION ALL
  3  SELECT 60 FROM dual UNION ALL
  4  SELECT 2 FROM dual
  5  )
  6  SELECT num, lpad(num, 5, '0') num_pad FROM DATA;

       NUM NUM_P
---------- -----
       540 00540
        60 00060
         2 00002

SQL>

Предложение WITH предназначено только для создания демонстрационных данных для демонстрации, в вашем реальном запросе просто выполните:

lpad(removal_count, 5, '0')

Помните, что число не может иметь ведущих нулей . Результатом вышеупомянутого запроса является строка , а не число .

Метод 2

Использование TO_CHAR и модели формата:

SQL> WITH DATA(num) AS(
  2  SELECT 540 FROM dual UNION ALL
  3  SELECT 60 FROM dual UNION ALL
  4  SELECT 2 FROM dual
  5  )
  6  SELECT num, to_char(num, '00000') num_pad FROM DATA;

       NUM NUM_PA
---------- ------
       540  00540
        60  00060
         2  00002

SQL>

Обновление . Чтобы избежать дополнительного начального пробела, используемого для знака минус, используйте FM в TO_CHAR формат:

Без FM .

SELECT TO_CHAR(1, '00000') num_pad,
  LENGTH(TO_CHAR(1, '00000')) tot_len
FROM dual;

NUM_PAD    TOT_LEN
------- ----------
 00001           6 

С FM:

SELECT TO_CHAR(1, 'FM00000') num_pad,
  LENGTH(TO_CHAR(1, 'FM00000')) tot_len
FROM dual;

NUM_PAD    TOT_LEN
------- ----------
00001            5
ответил Lalit Kumar B 29 J000000Wednesday15 2015, 10:14:42
0

Используйте функцию LPAD pl /sql http://www.techonthenet.com/oracle/functions/lpad.php .

removal_count = 540 
LPAD(TO_CHAR(removal_count), 5, '0');
Result: '00540'
ответил adamliesko 29 J000000Wednesday15 2015, 10:11:08
0

В sqlplus вы можете использовать формат col:

SQL > выберите 540 AA, 540 BB из двойного;

    AA         BB

   540        540

SQL > формат col bb 00000

SQL > /

    AA     BB

   540  00540

SQL >

ответил Merk 21 MarpmWed, 21 Mar 2018 17:51:34 +03002018-03-21T17:51:34+03:0005 2018, 17:51:34

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132