根据每个增量的固定长度和数字单位生成字符串格式



我必须编写一个 SP 来生成一个字符串,其中国家/地区(7 个字符(+ 省(1 个字符(+ 数字的组合从 01 开始。 例如:JAMAICAK01 其中牙买加(国家(、K(省(和 01 是每笔交易递增 1 的数字。

我在这里遇到的问题是生成的字符串长度最大值为 10,可以小于 10 但不能小于>10。

它应该以某些规则的方式处理,例如

  1. 组合不存在
  2. 当数字单位从十变为百时,使字符串 长度>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

告诉我是否有帮助。

最新更新