有這樣一個字符串(中,國,中,人民,國,現代工業化進程,國)
處理過之後變成(中,國,人民,現代工業化進程)
以下是我的方法,有什麼不對的地方還請各位指點
------------------刪除重複的字符
declare
@v1 nvarchar
(100)
declare
@v2 nvarchar
(100)
declare
@v3 nvarchar
(100)
declare
@split nvarchar
(100)
--N',,,,,中,國,中,人民,,,,,國,現代工業化進程,國,,,'
set
@v1=N', ,, ,,中,國,中,人民, ,, , ,國,現代工業化進程,國, ,,'
set
@v3=''
set
@split=','
/*
@v1 :存儲臨時字符串
@v2 :獲取兩個分隔符中的字符串
@v3 :存儲最後沒有重複的字符串
*/
if
left(@v1,1)<>@split
set
@v1=@split+@v1
if
right(@v1,1)<>@split
set
@v1=@v1+@split
while
len(@v1)>len(@split)*2
begin
set
@v2=substring
(@v1,len( @split),charindex
( @split,@v1,len
( @split)+1))
if
len(@v2)>len
(@split)*2
begin
set
@v2=right
(@v2,len(@v2)-1);
if
ltrim
(rtrim
(@v2))<>@split
set
@v3=@v3+ltrim
(rtrim
(@v2));
set
@v1= replace
(@v1,@v2,'')
end
else
--如果有連續的分割符,刪除.
set
@v1=stuff
(@v1,len
(@split)+1,len
(@split),'')
end
set
@v3=ltrim
(rtrim
(@v3))
while
(left(@v3,1)=',')
set
@v3=ltrim
(rtrim
(right(@v3,len
(@v3)-1)))
while
(right(@v3,1)=',')
set
@v3=ltrim
(rtrim
(left
(@v3,len
(@v3)-1)))
select
@v3
-------------------提取中文
declare
@v1 nvarchar(100)
set
@v1=N'ab呀吖3d%華e座//f456'
while
patindex
('%[A-Z,0-9,%]%',@v1)>0
begin
-- set @v2=isnull(@v2,'')+substring(@v1,patindex('%[0-9]%',@v1),1);
set
@v1=stuff
(@v1,patindex
('%[A-Z,0-9,%,/]%',@v1),1,'')
end
select
@v1
-------------------提取字母,數字
declare
@v1 nvarchar
(100)
set
@v1=N'ab呀吖3d%華e座//f456'
while
patindex
('%[^A-Z]%',@v1)>0
begin
-- set @v2=isnull(@v2,'')+substring(@v1,patindex('%[0-9]%',@v1),1);
set
@v1=stuff
(@v1,patindex
('%[^A-Z]%',@v1),1,'')
end
select
@v1
-------過濾重複字符
declare
@v1 nvarchar
(100)
declare
@v2 nvarchar
(100)
--N',,,,,中國中人民國現代工業化進程國,,,'
set
@v1=N',,,,,中國中人民國現代工業化進程國,,,'
while
len
(@v1)>0
begin
set
@v2=isnull
(@v2,'')+left
(@v1,1)
set
@v1=replace
(@v1,left
(@v1,1),'')
end
select
@v2