<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      SQL點滴15—在SQL Server 2008中調用C#程序

        

      T-SQL的在執行普通的查詢的時候是很高效的,但是在執行循環,判斷這樣的語句的時候效率就不那么的高了。這時可以借助CLR了,我們可以在SQL Server 2008中擴展C#程序來完成循環等過程式的查詢,或者其他SQL不便實現的功能。這個隨筆中將介紹在SQL Server中擴展C#程序實現正則表達式的替換功能。

      1. 新建一個類庫程序命名為Regex,打開Visual Studio 2008,點擊File,點擊New,點擊Project,在彈出的New Project對話框中選擇Class Library,項目名稱為Regex。
      2. 將項目中的類Class1命名為Regex,在這個類中寫入如下代碼:
        using System;
        using System.Collections.Generic;
        using System.Linq;
        using System.Text;
        using System.Data.SqlTypes;
        using System.Text.RegularExpressions;
        using Microsoft.SqlServer.Server;
        namespace RegExp
        {
        publicpartialclass RegExp
        {
        [SqlFunction(IsDeterministic
        =true, DataAccess = DataAccessKind.None)]
        publicstatic SqlString RegexReplace(
        SqlString input, SqlString pattern, SqlString replacement)
        {
        return (SqlString)Regex.Replace(
        input.Value, pattern.Value, replacement.Value);
        }
        }
        }

        這個類中使用System.Text.RegularExpressions.Regex類中的Replace函數,這個在C#是常用的一個函數,使用正則表達式實現替換功能。編譯這個類庫項目生成RegExp.dll,這個在后面會用到的。
      3. 下面打開SQL Server 2008的管理界面,我們需要把這個dll部署到數據庫中,然后再注冊一個方法,但是在這之前需要在SQL Server中開啟CLR調用功能,運行下面的SQL 語句:
        exec sp_configure 'clr enabled', 1;
        reconfigure;
      4. 運行下面的語句從這個dll中抽取中間語言(IL),如果你自己試驗,注意修改dll文件存放路徑。
        use AdventureWorks;
        create assembly RegExp from'D:\MyProject\RegExp\RegExp\bin\Debug\RegExp.dll'
        這個時候我們就可以在SQL Server中查看這個集合了,點擊展開數據庫AdventureWorks,點擊展開Programmability,點擊展開Assemblies就可以看到Regex,如下圖1。

        圖1
      5. 再寫一個SQL函數來注冊這個Assembly,代碼如下
        create function dbo.RegexReplace(  

        @input as nvarchar(max),

        @pattern as nvarchar(max),

        @replacement as nvarchar(max))

        returns nvarchar(max)

        with returns null on null input

        external name [RegExp].[RegExp.RegExp].[RegexReplace]

        go
         
        多謝【青蛙王子】提醒,已經更正
        注意:

        a. 函數是returns而不是return,很容易弄錯。
        b.with returns null on null input意思是只要調用函數的時候任何一個參數為null,函數返回值將會是null。
        c. 最后一句引用類庫的格式,我本來以為[MyAssemblyName].[MyAssemblyName].[MyMethodName]就可以了,但是需要寫成[MyAssemblyName]. [MyAssemblyName.MyClassName].[MyMethodName]這樣才可以運行上面的語句,否則報錯說找不到程序集中相關的類,至今不解,甚是迷惑。
      6. 現在我們就可以像其他的SQL函數一樣來調用這個函數了,下面舉一些調用的例子。

        這個很簡單了,就是將China中的字母z替換成z。

        這個把運算符+替換成add。

        這個就是那個語句WITH RETURNS NULL ON NULL INPUT的效果了。
      posted @ 2011-05-26 16:54  nd  閱讀(9084)  評論(15)    收藏  舉報
      主站蜘蛛池模板: 男女吃奶做爰猛烈紧视频| 东台市| 国产午夜精品理论大片| 久久精品国产亚洲av麻| 日韩国产精品一区二区av| 国产熟女一区二区三区蜜臀| 这里只有精品在线播放| 色综合色综合久久综合频道88| 日本一区二区精品色超碰| 亚洲精品国产精品国在线| 日韩人妻无码中文字幕视频| 四虎精品寂寞少妇在线观看| 在线观看无码不卡av| 高清美女视频一区二区三区| 天堂一区二区三区av| 国产69精品久久久久乱码免费| 成人国产欧美大片一区| 国产av综合一区二区三区| 亚洲欧洲日韩精品在线| 国精偷拍一区二区三区| 日本一道一区二区视频| 久久五十路丰满熟女中出| 精品久久精品久久精品九九| 国产精品久久久国产盗摄| 国产精品综合色区av| 久久综合88熟人妻| 一本色道久久综合熟妇人妻| 国产av午夜精品福利| 国产精品中文字幕观看| 欧美激情一区二区| 色噜噜久久综合伊人一本| 国内精品久久久久电影院| 精品久久久中文字幕一区| 色二av手机版在线| 久久本道综合久久伊人| 国产原创自拍三级在线观看| 欧美日韩精品一区二区视频| 国产成人高清精品亚洲| 久久欧洲精品成av人片| 2020国产成人精品视频| 免费无遮挡毛片中文字幕|