mssql을 처음쓰고 이제 입문한 완전 왕초보 sqler입니다...ㅜㅜ
시퀀스를 생성하는건 자료가 많아서 알겠는데 1,2,3,4,....이렇게하는건 알겠지만
예를들어서 a001, a002, a003 ....이런식으로 쿼리를 짤려면 어떻게 해야할까요?ㅠㅠ
고수님들 도와주세요ㅜㅜ
감사합니다ㅜㅜ
mssql을 처음쓰고 이제 입문한 완전 왕초보 sqler입니다...ㅜㅜ
시퀀스를 생성하는건 자료가 많아서 알겠는데 1,2,3,4,....이렇게하는건 알겠지만
예를들어서 a001, a002, a003 ....이런식으로 쿼리를 짤려면 어떻게 해야할까요?ㅠㅠ
고수님들 도와주세요ㅜㅜ
감사합니다ㅜㅜ
Identity 컬럼으로는 절대 불가능 할거라 보구요.....
Identity 컬럼을 가진 테이블을 하나 두고 값을 매번 할당 받아 (프로시저 OUTPUT) 문자열 + 시퀀스 값 받아서 저장을 해야 할거 같습니다.
만약 A제품, B제품이 있다 하면 A 시퀀스 테이블 하나, B 시퀀스 테이블을 두고 매번 저장 로직에 각각의 시퀀스를 할당 받아 처리 해야 할 듯 한데... 혹시라도 아래 쿼리가 도움이 되신다면....;;
declare @seq bigint;
declare @id nvarchar(32);
create table SeqTbl
(
Seq bigint not null identity(1,1)
, id int not null
)
create table product
(
id nvarchar(32)
)
BEGIN TRAN
INSERT INTO SeqTbl
(
id
)
VALUES
(
0
);
SET @seq = SCOPE_IDENTITY();
ROLLBACK TRAN;
if (@seq between 1 and 9)
SET @id = 'A00' + cast(@seq as nvarchar)
else if (@seq between 10 and 99)
SET @id = 'A0' + cast(@seq as nvarchar)
else if (@seq between 100 and 999)
SET @id = 'A' + cast(@seq as nvarchar)
insert into product
(
id
)
values
(
@id
)
select * from product
drop table seqtbl
drop table product