반응형

MySQL LPAD를 이용하여 코드를 자동으로 채번하는 방법입니다.

코드를 채번하는 처리는 PHP로 작성하였습니다.

코드를 자동채번하는 PHP

 

J010001과 같은 형태의 코드를 자동 채번해 보겠습니다.

1. 사업자 아이디 중 'J01'로 시작하는 아이디를 조회합니다.

WHERE biz_id like 'J01%'

 

2. 'J01'은 문자이기에 REPLACE 함수를 이용해 삭제한 후 MAX 값을 가져와서 1을 더합니다.

MAX(REPLACE(bz_id,'J01',''))+1

 

3. 채번된 숫자를 CAST함수를 이용해서 문자로 변환을 합니다.

   LPAD를 이용해서 0이 포함된 5자리 문자를 구성합니다.

LPAD(CAST(mem.next_seq AS CHAR), 5, '0')

 

4. PHP에서 MySQL로 00002를 가져온 후 'J01'을 붙여서 코드를 완성합니다.

   이 부분은 MySQl에서 'J01'를 붙여서 조회를 하셔도 됩니다.

	$nextSeqResult = sql_fetch($next_seq_sql, false);
	$next_seq = $nextSeqResult['next_seq'];
	$biz_id = 'J01' . $next_seq;

 

PHP로 작성된 전체 프로그램 소스입니다

<?
	// 코드 채번
	$next_seq_sql = "
	SELECT LPAD(CAST(mem.next_seq AS CHAR), 5, '0') next_seq
	  FROM
	  (
	    SELECT MAX(REPLACE(bz_id,'J01',''))+1 AS next_seq
	      FROM biz_cust
	     WHERE biz_id like 'J01%'
	  ) mem
	";

	$nextSeqResult = sql_fetch($next_seq_sql, false);
	$next_seq = $nextSeqResult['next_seq'];
	$biz_id = 'J01' . $next_seq;
	// End 코드 채번
?>

아래는 자주 접하지 못하는 MySQL 함수 스펙입니다.

w3schools 사이트를 참조하였습니다.

Syntax

LPAD(string, length, lpad_string)

Parameter Values

ParameterDescription

string Required. The original string. If the length of the original string is larger than the length parameter, this function removes the overfloating characters from string
length Required. The length of the string after it has been left-padded
lpad_string Required. The string to left-pad to string

Technical Details

Works in:

From MySQL 4.0

 

Syntax

CAST(value AS datatype)

Parameter Values

ParameterDescription

value Required. The value to convert
datatype Required. The datatype to convert to. Can be one of the following:

Technical Details

Works in:

From MySQL 4.0

 

2020/05/20 - [유용한 활용팁] - MySQL 기존 테이블 이용 신규 테이블 생성, 테이블명 변경, 컬럼에 AUTO_INCREMENT, DEFAULT 추가 방법, 인덱스 생성

 

MySQL 기존 테이블 이용 신규 테이블 생성, 테이블명 변경, 컬럼에 AUTO_INCREMENT, DEFAULT 추가 방법, 인

MySQL에서 테이블, 컬럼 관련해서 자주 사용하는 테이블명 변경, 컬럼에 AUTO_INCREMENT, DEFAULT 추가하는 방법입니다. 그리고 기존 테이블을 이용하여 신규 테이블을 쉽게 생성하는 방법과 인

han288.tistory.com

 

반응형

+ Recent posts