2016-07-06 56 views
0

我有一個表中的SQL與一個叫Credit Card Code插入SQL接下來依次

數據列如

CCARD-000093 
CCARD-000094 
CCARD-000095 
CCARD-000096 
CCARD-000097 
CCARD-000098 
CCARD-000099 
CCARD-000100 
CCARD-000101 

將數據插入這個表,我怎麼能在序列中獲取下一個值?

這是我迄今爲止

SELECT 'CCARD-' + 
(SELECT CAST(MAX(CAST(SUBSTRING(ccc.CreditCardCode,7, 6) as INT)) AS 
NVARCHAR(MAX)) FROM CustomerCreditCard ccc) 

這給CCARD-101

我如何能得到這個回報CCARD-000101 ???

+0

請分享序列碼和'下一個值'返回。 – artm

+0

我無法得到'NEXT VALUE FOR'的語法正確,所以我無法讓它返回一個值。 –

+0

您最好對此數據使用計算列,並只使用常規的int標識。這樣你就不必擔心計算下一個值。 –

回答

1

,如果你想增加表時,你可以使用Identity和Presisted概念自動遞增

IF OBJECT_ID('TestTables', 'U') IS NOT NULL 
BEGIN 
    DROP TABLE TestTables 
END 

重置要從哪裏開始

DBCC checkident ('TestTables', reseed, 93) 

CREATE TABLE TestTables 
(
    CreditCard AS ('CCARD-0000' + CAST(AutoIncId as varchar)) PERSISTED NOT NULL PRIMARY KEY,  
    [AutoIncId] INT IDENTITY NOT NULL, 
    [Bank] VARCHAR(10) 
); 


INSERT INTO TestTables ([Bank]) VALUES ('Indus') 
INSERT INTO TestTables ([Bank]) VALUES ('ICICI') 
INSERT INTO TestTables ([Bank]) VALUES ('HDFC') 
INSERT INTO TestTables ([Bank]) VALUES ('DBS') 

SELECT * FROM TestTables 
+0

你能否在我的問題中解釋你的答案?如果我要插入「CreditCardCode」列,我將如何根據最高當前值增加該值? –

+0

如果數據直接插入表中,那麼你可以按照這個過程,如果你想插入最大值,那麼你需要經過MAX選擇@BrendanGooden我會發布你 – mohan111

+0

看到上面,你能適應我的代碼? –

1

下一個值標識插入記錄,固定長度,帶前導'0':

SELECT 'CCARD-' + RIGHT(REPLICATE('0',6)+CAST(1+MAX(CAST(SUBSTRING(ccc.CreditCardCode,7, 6) as INT)) AS NVARCHAR(6)),6) 
FROM CustomerCreditCard ccc 
0

這似乎有伎倆

INSERT INTO CustomerCreditCard (CustomerCode, CreditCardCode, CreditCardDescription, NameOnCard, Address, City, State, PostalCode, Country, ExpMonth, ExpYear, Telephone, Email, IsActive, ResidenceType, UserCreated, DateCreated, UserModified, DateModified, County, StartMonth, StartYear) 
    SELECT c.CustomerCode, 
    (SELECT 'CCARD-' + REPLICATE('0', 6 - LEN((SELECT CAST(MAX(CAST(SUBSTRING(ccc.CreditCardCode,7, 6) as INT)) + 1 AS NVARCHAR(MAX)) FROM CustomerCreditCard ccc))) + 
(SELECT CAST(MAX(CAST(SUBSTRING(ccc.CreditCardCode,7, 6) as INT)) + 1 AS NVARCHAR(MAX)) FROM CustomerCreditCard ccc)), 
    'Web Credit Card', 
    c.CustomerName, 
    c.Address, 
    c.City, 
    c.State, 
    c.PostalCode, 
    c.Country, 
    'Jan', 
    2025, 
    c.Telephone, 
    c.Email, 
    1, 
    c.ResidenceType, 
    'webadmin', 
    GETDATE(), 
    'webadmin', 
    GETDATE(), 
    c.County, 
    'Jan', 
    2010 
    FROM Customer c 
    WHERE c.CustomerCode = 'CUST-015056'