Data Scientist

[MSSQL] 특정 길이만큼 문자 확인 및 채우기 (ID Generator, REPLICATE) 본문

SQL

[MSSQL] 특정 길이만큼 문자 확인 및 채우기 (ID Generator, REPLICATE)

Cosmo-JH 2020. 8. 7. 10:17

[MSSQL] 문자열 관련 함수 정리

https://luchiashin.tistory.com/14

 

[MSSQL] 문자열 관련 함수 정리

쿼리 사용중 매우 다양한 문자열 관련 함수를 사용하기 마련이다. 이번 포스팅에서는 문자열 관련 함수를 간략하게 정리하여, 편하게 사용되기를 바란다. 문자열 자르기 (4번째부터 5개) SELECT SUB

luchiashin.tistory.com

이번 포스팅에서는 문자열 함수 관련 포스팅에서 배운 점을 실무에 활용하는 팁을 전수하고자 한다.

간략하게 예를 들어서 설명하도록 하겠다. 테이블의 ID 칼럼 데이터 길이가 VARCHAR(10) 이라고 가정했을 때. 맨 앞글자의 유형이 A, B, C가 있고 그 뒤 9글자는 시퀀스(숫자 순번)라고 규칙을 정하자.

EX) 'A000000001', 'B000000001', 'C000000001'

다음과 같이 문자열과 숫자가 조합된 ID의 경우 Generator를 만들어 두면 편하게 사용이 가능하다. 그러면 문자열 함수를 활용하여 쿼리를 작성해 보도록 하겠다.

 
DECLARE @V_TYPE VARCHAR(1) = 'A'; -- ID 유형
DECLARE @V_MAX_ID VARCHAR(9); -- 해당 유형 ID MAX 값
DECLARE @V_LENGTH_ID INT = 9; -- 숫자 ID 길이

-- (MAX+1) ID 값 추출
SELECT @V_MAX_ID = CONVERT(VARCHAR, CONVERT(INT, RIGHT(MAX(ID), 9)) + 1)
FROM TABLE_NAME
WHERE ID LIKE 'A%'
;

-- 결과 값
SELECT @V_TYPE + REPLICATE('0', @V_LENGTH_ID - LEN(@V_MAX_ID)) + @V_MAX_ID;

 

1. 추출하고자 하는 ID의 MAX 값을 불러와서 정수형 변환 후 1을 증가시켜주고, 다시 문자열 데이터형으로 변환해준다.

2. (ID 유형 + 반복 문자 + MAX 다음 값) 을 조합하여 최종 결과를 만들어 낸다.