Sql 如何使用+;1.

Sql 如何使用+;1.,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想要ABC002 如何实现这一点?如果您的格式始终相同,则可以执行以下操作: SELECT MAX('ABC001') +1 提取最大值的整数部分并将其递增1。然后再次将其转换为字符串,用前导零填充,并添加前缀 但它肯定会非常脆弱。一个值不遵循该格式,查询将失败 最好有两个不同的字段:counter和prefix,并将它们组合在一个计算列上。尝试以下操作: select 'ABC' + right(concat('000',cast(cast(right(max(MY_FIELD),3) a

我想要
ABC002


如何实现这一点?

如果您的格式始终相同,则可以执行以下操作:

SELECT MAX('ABC001') +1
提取最大值的整数部分并将其递增1。然后再次将其转换为字符串,用前导零填充,并添加前缀

但它肯定会非常脆弱。一个值不遵循该格式,查询将失败

最好有两个不同的字段:counter和prefix,并将它们组合在一个计算列上。

尝试以下操作:

select 'ABC' + right(concat('000',cast(cast(right(max(MY_FIELD),3) as integer) + 1 as varchar(3))),3)
from MY_TABLE
SELECT  'ABC'+(REPLICATE('0', 3 - LEN(CONVERT(Nvarchar(6),MAX(CONVERT(Integer,RIGHT( [COLUMN_NAME] , 2)) )  + 1))) + CONVERT(Nvarchar,MAX(CONVERT(Integer,RIGHT( [COLUMN_NAME] , 3 )))  + 1) )
                FROM [TABLE_NAME]

请检查下面的SQL命令:

select concat(left(max(field_name),3),right(max(field_name),3) +1) from table_name

您需要SQL命令来执行此操作?使用
MAX
函数有什么意义?理想情况下,停止在单个列中存储复合信息。如果前缀不同,请将其存储在单独的列中。将数字数据保存在(可能)标识列中。如有必要,然后添加一个计算列以生成此复合输出。您好,Giorgos,I wnt ABC002为增量您应该按照Damien的建议修复您的数据模型不,格式不相同,这将是硬编码的,而不是泛型的。如果格式不总是相同,则看起来您将无法按照预期的方式进行操作,您需要切换到几列:前缀、计数器值和数字。我个人有一个不同的系列表,我在其中存储该计数的前缀和数字。所以在移动表上,我只需要两列:serie_id和counter_value。一个计算列也给了我一个按照系列规则格式化的数字。如果你想要'ABC002',试试这个
选择'ABC'+(复制('0',3-LEN(CONVERT(Nvarchar(6),MAX)(CONVERT(Integer,RIGHT('ABC001',2)))+CONVERT(Nvarchar,MAX(CONVERT(整数,右('ABC001',3)))+1))
它需要用前导零填充。
DECLARE @DATA VARCHAR(256);

SET @DATA = 'ABC001'

SELECT STUFF(@DATA, PATINDEX('%[1-9]%', @DATA), LEN(@DATA), SUBSTRING(@DATA, PATINDEX('%[1-9]%', @DATA), LEN(@DATA))+1) AS DATA