2016-08-11 3 views
0

나는 CCYYMMDDxxxx 형식의 프로그램 측을 생성하는 고유 ID가 있습니다. 여기서 xxxx는 0001부터 시작하여 자동 증가하는 4 자리 문자열입니다.SQL 서버 - 정수의 자릿수 적용

다음 요소를 계산하기 위해 부분 문자열을 사용하여 문자열에서 4 자리 숫자를 가져 오는 쿼리의 일부를 작성했습니다.

DECLARE @number int, @nextstring varchar(4) 
SET @number = (SELECT CONVERT(int, SUBSTRING(Payment_ID, 9, 4), 103) FROM Orders) 

1 씩 증가시킬 수 있어야하지만 4 자리 형식으로 유지해야합니다. 나는 '맞은'키워드를 우연히 만났지만, 얼마나 많은 0이 그 앞에 놓아야하는지 알지 못한다.

IF를 사용하지 않고이 작업을 수행하는 좋은 방법이 있습니까? 물론, 길이를 계산할 수 있고 시작 부분에 각각 0을 넣을 수 있지만 9, 99 및 999는 고려하지 않습니다.

+0

SQL Server라는 구문에서 추측하고 있습니다. 질문을 데이터베이스로 태그해야합니다. –

+0

그 제목에 제목이 있지만 아프다. –

답변

2

저는 실제로 identity 열이 처리하는 가장 좋은 방법이라고 생각합니다. 이 . . . 그 후에 순차 번호를 지정하십시오.

그러나 이렇게하려면 숫자를 왼쪽으로 채워야합니다. 다음 표의 값을 기반으로 다음 ID를 가져 오는 방법입니다.

SELECT (LEFT(MAX(payment_id), 8) + 
     RIGHT('0000' + CAST(CAST(RIGHT(MAX(payment_id), 4) as int) + 1 as VARCHAR(255)) 
     ) 
FROM Orders; 

ID가 충분한 지 확인하지 않습니다. 다시 말하자면 : identity 열을 ID로 사용하고 정보가 필요할 때 원하는 속성 (예 : 하루 중 숫자)을 구성하는 것이 훨씬 더 바람직하다고 생각합니다.

+0

답해 주셔서 감사합니다. 그 기능은 내가 찾고있는 기능이었습니다. ID를 사용하지 않는 이유는이 테이블에 이미 다른 용도로 사용되는 자동 증가 ID가 있기 때문입니다.이 특정 형식은 다른 용도로 사용됩니다. 생각해 줘서 고마워. –