首先,我必须为问题的简单性道歉,但我是SQL新手并且正在努力解决这个问题。
我有一个数据库,列出了我们想要创建查询的产品编号,告诉我们下一个可用的数字是什么。
产品编号以000000.00000
的格式记录在Prod_ID列中前6个数字用于产品类型,第2个5个数字用于产品变体(例如,不同的颜色)。我唯一感兴趣的部分是找到产品ID的下一个可用编号(前6个数字)
在找到ID之后没有使用ID的危险,因为我将是唯一一个管理它的人。
我试过了:
选择IsNull(max(Prod_ID),0)+ 1作为MaxSID FROM Products
但是我收到'转换varchar值时转换失败'失败。 Invali'到数据类型int'
提前致谢
答案 0 :(得分:1)
试试这个:
declare @Prod_ID varchar(20)
set @prod_id = '000000.00000'
select cast(
substring(@prod_id,8,5) -- Get second part of string
as int) +1 as TheNext
所以你会看到实际的代码
SELECT cast(substring(prod_id,8,5) as int) +1 as TheNext FROM table WHERE prod_id=123
注意:即使上述内容有效,我也同意有关重新设计此内容的评论