我必须编写一个 SP 来生成一个字符串,其中国家/地区(7 个字符(+ 省(1 个字符(+ 数字的组合从 01 开始。 例如:JAMAICAK01 其中牙买加(国家(、K(省(和 01 是每笔交易递增 1 的数字。
我在这里遇到的问题是生成的字符串长度最大值为 10,可以小于 10 但不能小于>10。
它应该以某些规则的方式处理,例如
- 组合不存在
- 当数字单位从十变为百时,使字符串 长度>10,我需要删除正确的字符,例如JAMAICAKKK10 从右侧JAMAICAK10,使总最大长度为 10。
在下面的代码中,我试图检查组合是否存在,我得到了它的最大值,并从最后一个开始做数字增量。 认为可以用更好的方式完成。
Declare @Province char(2)
Declare @Country varchar(10)
declare @CounProv varchar(10)
Declare @SimilarCounPRov varchar(max) = '';
declare @FinalString nvarchar(12)
declare @s varchar(50)
declare @s1 varchar(50)
declare @s2 varchar(50)
Set @Province = LEFT('KINGSTON', 1)
Set @Country = LEFT('JAMAICA', 7)
Set @CounProv = @Country+@Province
Select @SimilarCounPRov = MAX(field1) from dbo.table where field1
LIKE '%JAMAICAK%'
if @SimilarCounPRov IS NOT NULL
BEGIN
Set @s = (select fn_AlphaOnly('%JAMAICAK99%')) -- returns JAMAICAK
Set @s1 = (select fn_NumericOnly('%JAMAICAK99%')) -- returns 199
set @s2= @s1 +1 -- increment by 1
if len(@FinalString) > 10
----
need help here----`
我不确定我是否理解您的所有要求,但是如果您需要生成如下字符串:JAMAICAK1,JAMAICAK2,...JAMAICAK10...,JAMAICAK11,...JAMAICA100,JAMAICA101,...JAMAIC1000,JAMAIC1001...
您可以尝试利用这段代码:
Declare @Province char(2)
Declare @Country varchar(10)
Declare @CounProv varchar(10)
Declare @value int
Declare @str_value VARCHAR(100)
Set @Province = LEFT('KINGSTON', 1)
Set @Country = LEFT('JAMAICA', 7)
Set @value = 999999
Set @CounProv = @Country+@Province
Set @str_value = (select CAST(@value AS varchar(100)))
select LEFT(@CounProv,10-LEN(@str_value))+@str_value
告诉我是否有帮助。