초보자 코딩
335
2021-11-08 21:28:53
2
183

쿼리 해석좀 해주세요..ㅠㅠ



SELECT  CONCAT('20211108',LPAD(CAST(IFNULL(X.FILE_ID,0)+1 AS CHAR),3,'0')) AS FILE_ID
FROM (
       SELECT  CAST(MAX(SUBSTR(FILE_ID,9,3)) AS INT) AS FILE_ID 
       FROM    DB_CHESTNUT.ATTACH_FILE_MST 
       WHERE   FILE_ID LIKE '20211108%'
       ) X
WHERE  1 = 1
;


인터넷에서 공부하다 이런 쿼리를 봤는데 해석을 못하겠어요유ㅠ


마리아 디비 해석 좀 해주세요ㅠㅠ

0
  • 답변 2

  • C#린이
    3k
    2021-11-08 22:13:18 작성 2021-11-08 22:14:49 수정됨

    1. ATTACH_FILE_MST 테이블에서

    FILE_ID 가 '20211108' 으로 시작하는 데이터를 검색합니다.


    2. FILE_ID 의 9번째 자리를 시작으로

    3개의 문자열을 추출한 값 ( 즉, 9번째 자리부터 11번째 자리의 세자리 ) 의

    최댓값을 INT 타입으로 변환한 값의 별칭을 FILE_ID 로 부여합니다.


    3. 1,2번의 SELECT문을 인라인 뷰 별칭 X로 두고

    아래 두 문자열을 결합합니다.

      3.1. '20211108'

      3.2. 2번 최댓값 X.FILE_ID 에서 1을 더한 값을 문자로 변환하는데

             결과가 세자릿수 미만으로 나온다면 빈 자리만큼 0을 붙여

             세 자리로 만듭니다. 단, X.FILE_ID가 NULL이면 '001' 이 되겠지요.


    4. 3번값의 별칭을 FILE_ID 로 부여합니다.


    추가) 1번 테이블 앞에 붙는 DB_CHESTNUT은 스키마 이름,

    쉽게 말하면 테이블 소유자 이름이라고 보시면 됩니다.

  • 초보자 코딩
    335
    2021-11-09 10:45:49
  • 로그인을 하시면 답변을 등록할 수 있습니다.