SQL 字串拆分

來源:互聯網
上載者:User
有這樣一個字串(中,國,中,人民,國,現代工業化進程,國)

處理過之後變成(中,國,人民,現代工業化進程)

 

        以下是我的方法,有什麼不對的地方還請各位指點

 ------------------重複資料刪除的字元

 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

分享到:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.