Sql 查找下一个可用的产品ID
首先,我必须为问题的简单性道歉,但我对SQL是新手,正在为查询而挣扎 我有一个数据库,其中列出了我们的产品编号。我想创建一个查询,告诉我们下一个可用编号是什么 产品编号以000000.00000的格式记录在产品ID栏中 前6个数字用于管道类型,第2个5个数字用于产品变体(例如不同颜色)。我唯一感兴趣的部分是查找产品ID的下一个可用编号(前6个编号) 在我找到该ID后,不会有被使用的危险,因为我将是唯一管理该ID的人 我试过: 从产品中选择IsNull(max(Prod_ID),0)+1作为MaxSID 但是我得到一个“转换varchar值时转换失败”失败。无效“到数据类型int” 提前感谢试试这个:Sql 查找下一个可用的产品ID,sql,numbers,product,next,Sql,Numbers,Product,Next,首先,我必须为问题的简单性道歉,但我对SQL是新手,正在为查询而挣扎 我有一个数据库,其中列出了我们的产品编号。我想创建一个查询,告诉我们下一个可用编号是什么 产品编号以000000.00000的格式记录在产品ID栏中 前6个数字用于管道类型,第2个5个数字用于产品变体(例如不同颜色)。我唯一感兴趣的部分是查找产品ID的下一个可用编号(前6个编号) 在我找到该ID后,不会有被使用的危险,因为我将是唯一管理该ID的人 我试过: 从产品中选择IsNull(max(Prod_ID),0)+1作为Max
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
- 子字符串提取ID的第二部分
- 强制转换将其转换为整数
- +1给出下一个值
SELECT cast(substring(prod_id,8,5) as int) +1 as TheNext FROM table WHERE prod_id=123
注意:尽管上述方法可行,但我同意关于重新设计的意见(如果允许)是否有可能将这两个值分开?您在一列中存储了两条信息,这违反了1NF。您使用的是什么DBMS?如果这是sql server,则可以使用序列。老实说,我可能会把它分成两张桌子。产品和产品变体,但这可能是一个比你目前能做的更大的项目。