2013-12-10 69 views
0
select top 1(SUBSTRING(patientid,9,4)) as MaxpatientID from Patient_Data 
where PatientID like 'AT112013%' order by PatientID desc; 

特定值給出結果爲Increament使用更新查詢

MaxPatientID 
0014 

現在是有增量的任何可能性,這個數字爲前:

0015 
0016 
0017 

我嘗試這個查詢,但它不值得使用

update Patient_Data set (top 1(SUBSTRING(patientid,9,4)) as MaxpatientID)=(MaxpatientID + 1) 
where PatientID like 'AT112013%' order by PatientID desc; 

任何幫助表示讚賞。

+1

爲什麼不使用常規的INT IDENTITY,但在顯示前端時只顯示額外的零?或者也許是第二個(計算)列使用您的標識列,並添加您正在尋找的零? – Bridge

+0

你只需要更新前1行?或者是什麼?? – Nalaka526

+0

他正在更新帶有PatientID的所有記錄,如'AT112013%' – Jade

回答

0
update patientid = SUBSTRING(patientid,0,9)) + convert(varchar(32), convert(int, SUBSTRING(patientid,9,4)) + 1) where patientid like 'AT112013%' 
+0

請注意,樣本遞增值沒有用零/ s填充 – Jade

0

我剛剛在mysql中試過。希望這可以符合您的要求:

UPDATE test SET patientId = (SELECT patientId 
FROM 
(
    SELECT CONCAT(SUBSTRING(patientId, 1, 6), CAST(SUBSTRING(patientId, 4, 2) AS UNSIGNED) +1) 
    FROM test 
    WHERE `patientId` LIKE 'AT112013%') AS temp 
)