programing

Oracle SQL 쿼리에서 선행 0을 추가하는 방법은 무엇입니까?

powerit 2023. 7. 2. 21:04
반응형

Oracle SQL 쿼리에서 선행 0을 추가하는 방법은 무엇입니까?

COUNT() 함수를 사용하여 쿼리에서 removal_count라는 열을 검색하고 있습니다.결과적으로 removal_count의 데이터 유형은 BIGDECIMAL입니다.저는 숫자를 다섯 자리로 바꾸고 싶습니다.따라서 값이 5자리 미만이면 선행 0으로 표시해야 합니다.

예1) 제거 횟수가 540인 경우 00540을 표시합니다.
제거 카운트가 60이면 00060을 표시합니다.

제거 카운트가 정수/문자열 값이면 Java 식을 사용하여 선행 0을 추가할 수 있습니다.

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

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

주어진 java 표현식을 사용할 수 있도록 removal_count를 문자열 또는 정수(큰 소수점부터)로 변환할 수 있습니까?아니면 쿼리 자체에 선행 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')

숫자선행 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

사용LPADpl/sql 함수 http://www.techonthenet.com/oracle/functions/lpad.php .

removal_count = 540 
LPAD(TO_CHAR(removal_count), 5, '0');
Result: '00540'

sqlplus에서 col 형식을 사용할 수 있습니다.

SQL> 듀얼에서 540aa, 540bb 선택;

    AA         BB

   540        540

SQL > colb 형식 00000

SQL > /

    AA     BB

   540  00540

SQL>

언급URL : https://stackoverflow.com/questions/31693521/how-to-add-leading-zero-in-a-number-in-oracle-sql-query

반응형