2015-04-01 50 views
0

我必須增加一個字符串值1,如默認值將AEC00001和第二個值將AEC00002等等,我怎麼能通過使用c#或sql查詢來實現這一點。如何增加varchar值如AEC00001

+0

您正在使用什麼數據庫 ?請適當標記問題。 – 2015-04-01 12:12:10

+1

你必須提取整數部分,增量並轉換回來。但爲什麼你有這個問題?你不是想解決一個不應該存在的問題嗎? – jarlh 2015-04-01 12:12:13

+0

如果我提取整數部分,並加上1(00001 + 1 = 2),但我需要00002 – 2015-04-01 12:14:35

回答

0

你不能店0000 INT格式的數字之前,但你可以做這樣的事情:

SELECT RIGHT('0000' + CAST(2 AS varchar(5)) , 5) 

OR

SELECT '0000' + CAST(2 AS varchar(5)) 
+0

但是在AEC0009的情況下,這個查詢將返回像這個AEC0091這樣錯誤的值。我需要AEC0010 – 2015-04-01 12:23:57

0

這裏我用的計算列自動採取其他柱和反對貓它

declare @a table (a as 'AEC'+b, b nvarchar(max)) 

insert into @a SELECT RIGHT('00000'+CAST(1 AS VARCHAR(5)),5)union select RIGHT('00000'+CAST(2 AS VARCHAR(5)),5) union select RIGHT('00000'+CAST(3 AS VARCHAR(5)),5) 

select * from @a 
1

它看起來像一個糟糕的設計在你的應用程序的某個地方。可能你應該分開存儲號碼和前綴。但是無論如何,假設你的前綴總是「AEC」,並且數字的大小是五位小數 - 你可以增加你的值,例如(這是c#解決方案,因爲你沒有指定如果你更喜歡sql解決方案到c#之一) :

string s = "AEC00001"; 
string s1 = "AEC" + 
    (Convert.ToInt32(s.Replace("AEC", "")) + 1) 
     .ToString() 
     .PadLeft(5, '0'); 
+0

工作正常,這是我一直在尋找的,謝謝你,先生。 – 2015-04-01 12:28:34

0
var originalValue = "AEC00002"; 
// Get the numeric part (00002) 
var stringValue = Regex.Match(originalValue, @"\d+").Value; 
// Convert to int 
var intValue = Int32.Parse(stringValue); 
// Increase 
intValue++; 
// Convert back to string 
originalValue = "AEC" + intValue.ToString("D5"); 

結果:AEC00003