증분 번호 솔루션이 따르SQL 서버 + 문자열 형식 내가 바우처 형식이 같은 읽는 저장이
[VOUTYPECODE][ISBIRTHDAY][ISREUSABLE][STARTD][ENDD]VT555 + (RunningNo)
아래의 쿼리 부분에 참조를 @VouFormatLastNum
은 다음과 같이 표현되는 문자열의 형식은 다음과 같습니다
'VouT001012012010420120704VT555181'
위와 같이 바우처 형식에서 각괄호로 묶은 항목을 쿼리하여 파생됩니다. 이제, (모든 괄호로 묶은 항목을 분리하여 파생 됨)에 저장된 차단기로 'VT555'
을 사용하여 실행중인 번호를 검색합니다. 이전에 발행 된 바우처의 '181'이므로 그 +1에 +1을 추가 할 수 있습니다. 다음 바우처를 위해.
내 바우처 형식이 VT555
이 아닌 다른 차단기로 변경 될 때까지 모든 것이 올바르게 작동합니다. 분명히 마지막 바우처는 여전히 VT555
이지만 새로운 @VouFormatCore
은 다른 값으로 변경되었으므로 더 이상 실행중인 no를 검색하기 위해 아래 쿼리를 수행 할 수 없습니다.
저는이 문제를 해결할 방법을 생각해 봤습니다. 어쨌든 솔루션 공유에 신경을 쓰시겠습니까? 감사.
[email protected] = 'VouT001012012010420120704VT555181' (This is obtained by querying the Top 1 voucher from the voucher table ordered by issue date.)
Declare @position as int
Set @position = (select len(@VouFormatLastNum) - charindex(reverse(@VouFormatCore),reverse(@VouFormatLastNum)) +1)
[email protected] will now contain the next running no. after selecting the substring below:
Set @VouFormatLastNum = (select substring(@VouFormatLastNum, @position+1,len(@VouFormatLastNum)[email protected]) + 1)
select @VouFormatLastNum
Set @NextVoucher= @var1 + @var2 + @var3 + @var4 + @var5 + @VouFormatCore + @VouFormatLastNum
여러 개의 "값"을 하나의 열에 연결하면 많은 고통을 겪습니다. 각 값을 고유 한 열로 저장하고 표시 목적으로 만 연결하는 것 (그리고/또는 계산 된 열 /보기 사용)을 제안합니다. 별도의 열을 사용하면 시퀀스를 더 쉽게 계산할 수 있습니다. –