0DROPTABLEdbo.Test1CREATETABLETest1(fNameNVARCHAR(10),ScroeVARCHAR(50" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

SQL腳本整理系列一 分隔函數

系統 1697 0

原來效果:

        
          fName    Scroe

王某某    
        
        
          101
        
        ,
        
          102
        
        ,
        
          109
        
        
          

李某某    
        
        
          102
        
        ,
        
          103
        
        
          

王某某    
        
        
          103
        
        
          

李某某    

李某某    
        
        
          101
        
        ,
        
          102
        
        ,
        
          103
        
        
          

王某某    
        
        
          222
        
      

執行后效果:

        
          name    score

李某某    
        
        
          101
        
        
          

李某某    
        
        
          102
        
        
          

李某某    
        
        
          103
        
        
          

王某某    
        
        
          101
        
        
          

王某某    
        
        
          102
        
        
          

王某某    
        
        
          103
        
        
          

王某某    
        
        
          109
        
        
          

王某某    
        
        
          222
        
      

--基礎數據表創建

          
            IF
          
          
            OBJECT_ID
          
          (
          
            '
          
          
            Test1
          
          
            '
          
          ) 
          
            >
          
          
            0
          
          
            DROP
          
          
            TABLE
          
          
             dbo.Test1




          
          
            CREATE
          
          
            TABLE
          
          
             Test1

    (

      fName 
          
          
            NVARCHAR
          
          (
          
            10
          
          
            ) ,

      Scroe 
          
          
            VARCHAR
          
          (
          
            50
          
          
            )

    );




          
          
            INSERT
          
          
              dbo.Test1

        ( fName, Scroe )


          
          
            VALUES
          
            ( N
          
            '
          
          
            王某某
          
          
            '
          
          , 
          
            --
          
          
             fName - nvarchar(10)
          
          
            '
          
          
            101,102,109
          
          
            '
          
          
            --
          
          
             Scroe - varchar(50)
          
          
                      )


          
          
            INSERT
          
          
              dbo.Test1

        ( fName, Scroe )


          
          
            VALUES
          
            ( N
          
            '
          
          
            李某某
          
          
            '
          
          , 
          
            --
          
          
             fName - nvarchar(10)
          
          
            '
          
          
            102,103
          
          
            '
          
          
            --
          
          
             Scroe - varchar(50)
          
          
                      )


          
          
            INSERT
          
          
              dbo.Test1

        ( fName, Scroe )


          
          
            VALUES
          
            ( N
          
            '
          
          
            王某某
          
          
            '
          
          , 
          
            --
          
          
             fName - nvarchar(10)
          
          
            '
          
          
            103
          
          
            '
          
          
            --
          
          
             Scroe - varchar(50)
          
          
                      )


          
          
            INSERT
          
          
              dbo.Test1

        ( fName, Scroe )


          
          
            VALUES
          
            ( N
          
            '
          
          
            李某某
          
          
            '
          
          , 
          
            --
          
          
             fName - nvarchar(10)
          
          
            ''
          
          
            --
          
          
             Scroe - varchar(50)
          
          
                      )


          
          
            INSERT
          
          
              dbo.Test1

        ( fName, Scroe )


          
          
            VALUES
          
            ( N
          
            '
          
          
            李某某
          
          
            '
          
          , 
          
            --
          
          
             fName - nvarchar(10)
          
          
            '
          
          
            101,102,103
          
          
            '
          
          
            --
          
          
             Scroe - varchar(50)
          
          
                      )

 
          
          
            INSERT
          
          
              dbo.Test1

        ( fName, Scroe )


          
          
            VALUES
          
            ( N
          
            '
          
          
            王某某
          
          
            '
          
          , 
          
            --
          
          
             fName - nvarchar(10)
          
          
            '
          
          
            222
          
          
            '
          
          
            --
          
          
             Scroe - varchar(50)
          
          
                      ) 

          

          

 
          
          
            SELECT
          
          
            *
          
          
            FROM
          
          
             Test1

          
          
          
            --
          
          
            DECLARE @Scroe VARCHAR(max)
          
        
View Code

--創建分隔函數

          
             1
          
          
            IF
          
          
            OBJECT_ID
          
          (
          
            '
          
          
            getSplitResult
          
          
            '
          
          ) 
          
            >
          
          
            0
          
          
             2
          
          
            DROP
          
          
            FUNCTION
          
          
             getSplitResult


          
          
             3
          
          
            GO
          
          
             4
          
          
             5
          
          
            /*
          
          
             6
          
          
            分隔函數


          
          
             7
          
          
             8
          
          
            */
          
          
             9
          
          
            10
          
          
            CREATE
          
          
            FUNCTION
          
          
             dbo.getSplitResult


          
          
            11
          
          
                (


          
          
            12
          
          
            @SourceObject
          
          
            VARCHAR
          
          (
          
            MAX
          
          ) ,
          
            --
          
          
            源對象
          
          
            13
          
          
            @Split
          
          
            VARCHAR
          
          (
          
            1
          
          ) 
          
            =
          
          
            '
          
          
            ,
          
          
            '
          
          
            --
          
          
            分隔參數
          
          
            14
          
          
                )


          
          
            15
          
          
            --
          
          
            返回一個表
          
          
            16
          
          
            RETURNS
          
          
            @tb
          
          
            TABLE
          
           ( score 
          
            VARCHAR
          
          (
          
            10
          
          
            ) )


          
          
            17
          
          
            AS
          
          
            18
          
          
            BEGIN
          
          
            19
          
          
            --
          
          
            不含分隔符
          
          
            20
          
          
            IF
          
          
            CHARINDEX
          
          (
          
            @Split
          
          , 
          
            @SourceObject
          
          ) 
          
            =
          
          
            0
          
          
            21
          
          
            INSERT
          
          
            @tb
          
          
            22
          
          
                                ( score )


          
          
            23
          
          
            VALUES
          
            ( 
          
            @SourceObject
          
          
            --
          
          
             score - varchar(10)
          
          
            24
          
          
                                  );


          
          
            25
          
          
            26
          
          
            WHILE
          
           ( 
          
            CHARINDEX
          
          (
          
            @Split
          
          , 
          
            @SourceObject
          
          ) 
          
            >
          
          
            0
          
          
             )


          
          
            27
          
          
            BEGIN
          
          
            28
          
          
            --
          
          
            插入數據
          
          
            29
          
          
            INSERT
          
          
            @tb
          
          
            30
          
          
                                    ( score


          
          
            31
          
          
                                    )


          
          
            32
          
          
            VALUES
          
            ( 
          
            SUBSTRING
          
          (
          
            @SourceObject
          
          , 
          
            0
          
          
            ,


          
          
            33
          
          
            CHARINDEX
          
          (
          
            @Split
          
          , 
          
            @SourceObject
          
          ))  
          
            --
          
          
             score - varchar(10)
          
          
            34
          
          
                                    );


          
          
            35
          
          
            36
          
          
            SET
          
          
            @SourceObject
          
          
            =
          
          
            RIGHT
          
          (
          
            @SourceObject
          
          
            ,


          
          
            37
          
          
            LEN
          
          (
          
            @SourceObject
          
          
            )


          
          
            38
          
          
            -
          
          
            CHARINDEX
          
          (
          
            @Split
          
          , 
          
            @SourceObject
          
          
            )) 


          
          
            39
          
          
            40
          
          
            IF
          
           ( 
          
            CHARINDEX
          
          (
          
            @Split
          
          , 
          
            @SourceObject
          
          ) 
          
            =
          
          
            0
          
          
            41
          
          
            AND
          
          
            LEN
          
          (
          
            @SourceObject
          
          ) 
          
            <>
          
          
            0
          
          
            42
          
          
                               )


          
          
            43
          
          
            INSERT
          
          
            @tb
          
          
            44
          
          
                                        ( score )


          
          
            45
          
          
            VALUES
          
            ( 
          
            @SourceObject
          
          
            --
          
          
             score - varchar(10)
          
          
            46
          
          
                                          );


          
          
            47
          
          
            END
          
          
            48
          
          
            49
          
          
            RETURN
          
          
            50
          
          
            END
          
          
            51
          
        
View Code

--創建存儲過程

          
            IF
          
          
            OBJECT_ID
          
          (
          
            '
          
          
            sp_SplitResult
          
          
            '
          
          ) 
          
            >
          
          
            0
          
          
            DROP
          
          
            PROC
          
          
             sp_SplitResult


          
          
            GO
          
          
            CREATE
          
          
            PROC
          
          
             sp_SplitResult


          
          
            AS
          
          
            BEGIN
          
          
            --
          
          
            聲明一個表
          
          
            SET
          
             NOCOUNT 
          
            ON
          
          
            DECLARE
          
          
            @tb
          
          
            TABLE
          
          
            

            (

              name 
          
          
            VARCHAR
          
          (
          
            20
          
          
            ) ,

              score 
          
          
            VARCHAR
          
          (
          
            10
          
          
            )

            )

        
          
          
            DECLARE
          
          
            @name
          
          
            VARCHAR
          
          (
          
            20
          
          )
          
            =
          
          
            ''
          
          
             ,

            
          
          
            @SourceObject
          
          
            VARCHAR
          
          (
          
            MAX
          
          
            )

        

        
          
          
            --
          
          
            創建游標
          
          
            DECLARE
          
           cursor_tb 
          
            CURSOR
          
          
             FAST_FORWARD

        
          
          
            FOR
          
          
            

            ( 
          
          
            SELECT
          
          
                fName ,

                        Scroe

              
          
          
            FROM
          
          
                  dbo.Test1

              
          
          
            WHERE
          
               Scroe 
          
            <>
          
          
            ''
          
          
            

            )

        
          
          
            OPEN
          
          
              cursor_tb

        
          
          
            FETCH
          
          
            NEXT
          
          
            FROM
          
          
             cursor_tb

        
          
          
            INTO
          
          
            @name
          
          , 
          
            @SourceObject
          
          
            ;

        

        
          
          
            WHILE
          
          
            @@FETCH_STATUS
          
          
            =
          
          
            0
          
          
            BEGIN
          
          
            INSERT
          
          
            @tb
          
          
            SELECT
          
          
            @name
          
          
             ,

                                score

                        
          
          
            FROM
          
              dbo.getSplitResult(
          
            @SourceObject
          
          , 
          
            '
          
          
            ,
          
          
            '
          
          
            ) 

                
          
          
            FETCH
          
          
            NEXT
          
          
            FROM
          
          
             cursor_tb

        
          
          
            INTO
          
          
            @name
          
          , 
          
            @SourceObject
          
          
            END
          
          
            CLOSE
          
          
             cursor_tb

        
          
          
            DEALLOCATE
          
          
             cursor_tb

        

      

      

        
          
          
            SELECT
          
          
            DISTINCT
          
          
            *
          
          
            FROM
          
          
            @tb
          
          
            END
          
          
            --
          
          
              EXEC sp_SplitResult 
          
        
View Code

--執行結果

        
          EXEC
        
         sp_SplitResult 
      

?

      



SQL腳本整理系列一 分隔函數


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。?!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲h | 久久久久久久国产精品电影 | 国产成人久久 | 一区二区三区欧美在线 | 久久精品久久久 | 亚洲国产aⅴ成人精品无吗 最新国产网址 | 日韩在线观看精品 | 亚洲乱码在线卡一卡二卡新区 | 国产一区二区在线免费观看 | 国产精品久久久久影视青草 | 日本免费a视频 | 国产在线视频2019最新视频 | 青娱乐在线免费观看视频 | 亚洲高清视频在线 | 国产在线第一区 | 青青草一区 | 久久中文字幕久久久久91 | 成人亚洲一区 | 欧美a∨| 99视频观看 | 日韩免费在线观看视频 | 成年网址网站在线观看 | 国产 日韩 欧美 在线 | 欧美v在线 | 成人免费视频在线观看 | jizzjizzjizz亚洲日本 | A片欧美乱妇高特黄AA片片 | 欧美一级片手机在线观看 | 午夜影院在线观看视频 | 五月激情小说 | 婷婷免费视频 | www.狠狠色| 老妇毛片| 国产亚洲精品sese在线播放 | 国产一区二区三区免费观看 | 国产日韩欧美 | www.色人阁| 国产精品成人一区二区三区 | 久久se精品一区精品二区 | 这里只有精品视频 | 亚洲一区二区欧美日韩 |