2015-05-26 3 views
2

я есть процедуры сохранения генерировать код купона, где я прохожу префикс купона кодConfuse при генерации кода купона

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 to int conversion failed из-за попытки разобрать «NEW001» на int, чтобы найти максимальное значение можно ли анализировать этот «NEW001» на int, игнорируя стартовые символы

+1

Тег dbms used! (Не похож на 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

Большое вам спасибо –

Смежные вопросы