如何像AEC00001一样增加varchar值

时间:2015-04-01 12:11:04

标签: c# sql asp.net sql-server-2008

我必须将字符串值增加1,例如默认值为AEC00001,第二个值为AEC00002,依此类推,如何通过使用c#或sql查询来实现此目的。

6 个答案:

答案 0 :(得分:1)

在您的应用程序中,它看起来像是一个糟糕的设计。可能你应该分别存储号码和前缀。

但是无论如何,假设你的前缀总是“AEC”并且数字大小是五位小数 - 你可以增加你的值(这是c#解决方案,因为你没有指定你是否更喜欢sql解决方案到c#one):

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

答案 1 :(得分:0)

你不能在INT格式的数字之前存储0000,但你可以这样做:

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

OR

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

答案 2 :(得分:0)

这里我使用了计算列,它自动将其他列和con-cat带到它

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

答案 3 :(得分: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

答案 4 :(得分:0)

您可以使用计算列:

  

计算列是表示同一表中其他列可以使用的数据的列。该表达式可以是非计算列或任何函数和常量。它不能是子查询。在这里,计算列被标记为“持久”,因此在引用列中进行的任何更新都将在计算列中自动同步。

有关更多信息,请参见本文:Auto Incremented Column With VARCHAR and NVARCHAR Data Type in SQL

答案 5 :(得分:0)

在JavaScript中使用以下功能

function autoIncrementCustomId(lastRecordId){
  let increasedNum = Number(lastRecordId.replace('ABC','')) + 1;
  let kmsStr = lastRecordId.substr(0,3);
  for(let i=0; i< 6 - increasedNum.toString().length; i++){
    kmsStr = kmsStr+'0';
  }
  kmsStr = kmsStr + increasedNum.toString();
  console.log(kmsStr);
}

autoIncrementCustomId('ABC009999')