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條評論
主站蜘蛛池模板: 成人免费高清 | 免费看搡女人的视频 | 好男人www.| 天天操天天射天天插 | 亚洲九九色 | 午夜激情视频在线观看 | 91高清在线观看 | 欧美精品成人 | 日韩中文字幕在线播放 | 亚洲欧美一区二区三区情侣bbw | 国产免费视频 | 国产精品国产成人国产三级 | 色婷婷av久久久久久久 | 精品视频久久 | 成人av网站免费观看 | 久久精品视在线看1 | 色综合久久综合中文小说 | 香蕉久久网 | 久久av热 | 国产精品一区二区免费 | 久久国产一二区 | 精品福利av导航 | 天天拍天天色 | 欧美性高清视频免费看www | 国产欧美一级二级三级在线视频 | 久久草在线视频国产一 | 国产伦精品一区二区三区高清 | 欧美日韩精品一区二区三区蜜桃 | 久草6| 久草天堂| 狠狠干2020 | 偷拍—91porny九色 | 91久久夜色精品国产九色 | 国产午夜大片 | 亚洲欧美中文日韩在线v日本 | 日韩精品一区二区三区视频播放 | 麻豆精品国产自产在线 | 亚洲精品一区二区三区精华液 | 小视频在线看 | 唐人社电亚洲一区二区三区 | 国产欧美一区二区三区精品 |