zoukankan      html  css  js  c++  java
  • SQL 字符串拆分

    有这样一个字符串(中,国,中,人民,国,现代工业化进程,国)

    处理过之后变成(中,国,人民,现代工业化进程)

     

            以下是我的方法,有什么不对的地方还请各位指点

     ------------------删除重复的字符

     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

  • 相关阅读:
    【转】一句话设计模式
    【转】Bad Smell(代码的坏味道)
    【转】[重构]Primitive Obsession
    【转】22种代码的坏味道,一句话概括
    【转】C#中的implicit 和 explicit
    【转】100本最棒的英文侦探小说
    [转]Visual Studio调试之符号文件
    【转】简要分析unity3d中剪不断理还乱的yield
    apache https配置步骤
    apache https配置步骤
  • 原文地址:https://www.cnblogs.com/jiangyuxuan/p/2100005.html
Copyright © 2011-2022 走看看