生成优惠券代码时混淆
Confuse while generating coupon code
我有存储程序来生成优惠券代码,我正在传递优惠券代码的前缀
CREATE PROCEDURE [dbo].[spCouponCode1]
@Prefix varchar(50),
@Lenght varchar(50)
AS
Begin
declare @maxID as bigint=0
declare @PrefixLenght as bigint=0
set @PrefixLenght=LEN(@Prefix)
select @maxID = isnull(max(substring(CouponCode,@PrefixLenght+1,@PrefixLenght+1+@Lenght)),0) + 1 from Coupon where CouponCode Like @Prefix + '%'
select @Prefix + cast(@maxID as VARchar(100))
end
它运行完美
问题是
如果在优惠券 table 中有像 'FIRST0001' 和 'FIRSTNEW001' 这样的优惠券代码
在这里我收到错误 - varchar 到 int 的转换失败,因为我试图将 'NEW001' 解析为 int 以找到最大值
是否可以将此 'NEW001' 解析为 int 忽略起始字符
对于Sql Server
尝试:
select @maxID = isnull(max(substring(CouponCode, patindex('%[0-9]%', CouponCode), len(CouponCode))),0) + 1
from Coupon where CouponCode Like @Prefix + '%'
我有存储程序来生成优惠券代码,我正在传递优惠券代码的前缀
CREATE PROCEDURE [dbo].[spCouponCode1]
@Prefix varchar(50),
@Lenght varchar(50)
AS
Begin
declare @maxID as bigint=0
declare @PrefixLenght as bigint=0
set @PrefixLenght=LEN(@Prefix)
select @maxID = isnull(max(substring(CouponCode,@PrefixLenght+1,@PrefixLenght+1+@Lenght)),0) + 1 from Coupon where CouponCode Like @Prefix + '%'
select @Prefix + cast(@maxID as VARchar(100))
end
它运行完美 问题是 如果在优惠券 table 中有像 'FIRST0001' 和 'FIRSTNEW001' 这样的优惠券代码 在这里我收到错误 - varchar 到 int 的转换失败,因为我试图将 'NEW001' 解析为 int 以找到最大值 是否可以将此 'NEW001' 解析为 int 忽略起始字符
对于Sql Server
尝试:
select @maxID = isnull(max(substring(CouponCode, patindex('%[0-9]%', CouponCode), len(CouponCode))),0) + 1
from Coupon where CouponCode Like @Prefix + '%'