Sql server 根据每个增量上的固定长度和数字单位生成字符串格式
我必须编写一个SP来生成一个由国家(7个字符)+省(1个字符)+从01开始的数字组合而成的字符串。例如:JAMAICAK01 其中,牙买加(国家)、K(省)和01是数字,每个交易递增1 我这里的问题是生成的字符串长度max是10,可以小于10但不能大于10 它应该按照一定的规则来处理,比如Sql server 根据每个增量上的固定长度和数字单位生成字符串格式,sql-server,Sql Server,我必须编写一个SP来生成一个由国家(7个字符)+省(1个字符)+从01开始的数字组合而成的字符串。例如:JAMAICAK01 其中,牙买加(国家)、K(省)和01是数字,每个交易递增1 我这里的问题是生成的字符串长度max是10,可以小于10但不能大于10 它应该按照一定的规则来处理,比如 这种组合并不存在 当数字单位从十变为百时,生成字符串 长度>10,我需要移除正确的字符,例如Jamaicakk10到 JAMAICAK10从右侧开始,使总最大长度为10 在我下面的代码中,我试图检查组合是否存
长度>10,我需要移除正确的字符,例如Jamaicakk10到 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
告诉我是否有用 “删除eg的正确字符”未显示Seq#的有效结果。您的结果显示牙买加7个字符、K1个字符和序列2个数字,但不是100或101,。。。国家和省的Declare-s太长。现在似乎是时候重新设计表了,以便Country、Province和SeqNum都有各自独立的规范化列,这些列稍后仅在显示时格式化为10个字符。