2015-04-01 48 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