2015-05-26 71 views
2

我有存儲過程來產生,其中我傳遞的優惠券代碼前綴混淆而產生的優惠券代碼

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,@[email protected])),0) + 1 from Coupon where CouponCode Like @Prefix + '%' 
    select @Prefix + cast(@maxID as VARchar(100)) 
    end 

,它正在完美 問題是優惠券代碼, 如果優惠券桌子上有優惠券代碼,如「 FIRST0001'和'FIRSTNEW001' 這裏我得到錯誤 - varchar到int轉換失敗,因爲我試圖解析'NEW001'到int找到最大值 是否有可能解析此'NEW001'爲int,忽略起始字符

+1

使用了標記dbms! (看起來不像ANSI SQL ...) – jarlh

+0

看起來像oracle存儲過程給我,但不知道 –

+0

我在做這個MS SQL 2008 –

回答

2

對於Sql Server嘗試:

select @maxID = isnull(max(substring(CouponCode, patindex('%[0-9]%', CouponCode), len(CouponCode))),0) + 1 
from Coupon where CouponCode Like @Prefix + '%' 
+0

非常感謝你 –