이 명령을 수정하여 00000과 같이 5 자리 정수가 있고 00001부터 시작하는 ID 열을 만들려면 어떻게해야합니까?SQL Server IDENTITY 열
CREATE TABLE [dbo].[Company]
(
[CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](200) NOT NULL
)
이 명령을 수정하여 00000과 같이 5 자리 정수가 있고 00001부터 시작하는 ID 열을 만들려면 어떻게해야합니까?SQL Server IDENTITY 열
CREATE TABLE [dbo].[Company]
(
[CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](200) NOT NULL
)
정수에는 앞에 0이 없습니다. 정수를 표시 할 문자열로 변환 할 때 처리 할 서식 문제입니다.
당신이 정말로, 정말로 바로 SQL에서 같은 문자열을 제시 할 수 있어야하는 경우 계산 된 열 함께 할 수 있습니다 : 아무튼 서식하지만
CREATE TABLE [dbo].[Company](
[CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
[FormattedCompanyId] AS RIGHT('0000'+ CONVERT(VARCHAR,Num),5),
[Name] nvarchar NOT NULL,
내가 사용하지 않을 것이라고 솔루션 자신 데이터 저장소에 속합니다.
앞에 0을 직접 추가해야합니다. 해결책으로 "formatedID"라고하는 다른 colomn을 추가하고 ID 컬럼의 값으로 "삽입 트리거 후"로 업데이트하고 원하는 선행 0으로 포맷 할 수 있습니다.
예 :
CREATE TABLE [dbo].[Company]
(
[CompanyId] [bigint] IDENTITY(1,1) NOT NULL,
[FormattedID] [VARCHAR(20)],
[Name] [nvarchar](200) NOT NULL
)
CREATE TRIGGER ON [dbo].[Company]
FOR INSERT
AS
BEGIN
UPDATE [dbo].[Company]
FROM inserted
SET FormattedID = RIGHT('0000'+ CONVERT(VARCHAR, [dbo].[Company].CompanyId),5)
WHERE dbo.Company.CompanyId = inserted.CompanyId
END
방아쇠. –
해당 제목 인 "** 당신이 바로 SQL에서 같은 문자열을 제시 할 수 있어야합니다 ** 경우"...이 더 프레 젠 테이션 계층의 우려처럼 들린다. – Aaronaught
실제로 계산 된 열에'PERSISTED' 키워드를 추가하여 실제로 값을 디스크에 저장함으로써 쿼리 성능을 크게 향상시킬 수 있습니다. (해당 열의 인덱싱을 허용합니다) –