2016-07-28 116 views
-2

如果自动增加前缀从(00到99),如果同名?前缀相同名称前增量

ex:- Kiran,Kiran,Kiran 
Then 
ANS:= 01 Kiran 
     02 Kiran 
     etc 

注=没有空间

+0

请阅读[此](http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum /)的一些提示改善你的问题。 – HABO

回答

1

使用split string functions的一个从这里:

declare @str varchar(max) 
set @str='Kiran,Kiran,Kiran' 

;with cte 
as 
(
select *, row_number() over (partition by item order by item)as rn 
from [dbo].[SplitStrings_Numbers](@str,',') 
) 
select item, 
case when rn<10 then '0' +cast(rn as varchar(2)) else cast(rn as varchar(2)) end from cte 

输出:

item (No column name) 
Kiran 01 
Kiran 02 
Kiran 03 
1

如果有帮助,我的解析器函数已经返回序列。例如:

Declare @String varchar(max)='Kiran,Kiran,Kiran' 
Select * from [dbo].[udf-Str-Parse](@String,',') 

返回现在

Key_PS Key_Value 
1  Kiran 
2  Kiran 
3  Kiran 

,一点点扭曲,你可以格式化你想要的结果

Select Seq= RIGHT('00'+cast(Key_PS as varchar(10)),2),ParseVal=Key_Value from [dbo].[udf-Str-Parse](@String,',') 

返回

Seq ParseVal 
01 Kiran 
02 Kiran 
03 Kiran 

的UDF

CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimeter varchar(10)) 
--Usage: Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',') 
--  Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ') 
--  Select * from [dbo].[udf-Str-Parse]('id26,id46|id658,id967','|') 
--  Select * from [dbo].[udf-Str-Parse]('Kiran,Kiran,Kiran',',') 

Returns @ReturnTable Table (Key_PS int IDENTITY(1,1) NOT NULL , Key_Value varchar(max)) 

As 

Begin 
    Declare @intPos int,@SubStr varchar(max) 
    Set @IntPos = CharIndex(@Delimeter, @String) 
    Set @String = Replace(@String,@[email protected],@Delimeter) 
    While @IntPos > 0 
     Begin 
     Set @SubStr = Substring(@String, 0, @IntPos) 
     Insert into @ReturnTable (Key_Value) values (@SubStr) 
     Set @String = Stuff(@String, 1, Len(@[email protected]), ''); 
     Set @IntPos = CharIndex(@Delimeter, @String) 
     End 
    Insert into @ReturnTable (Key_Value) values (@String) 
    Return 
End