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

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

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

      XuGang

      記錄一個程序員的成長

       

      SQL Server 中幾個有用的特殊函數


      在SQL Server 的使用過程中,發現幾個很有用,但不太常用(或細節不太清楚)的函數(存儲過程):

      isnumeric,isdate,patindex,newid,collate,sp_executesql,checksum

      遂記下,以備日后查詢。不敢獨享,與君共之。有用且看,無用略過。


      1> isnumeric( expression )

      -- 返回值 1 | 0,判斷是否是數字類型。

      數值類型包括(int、bigint、smallint、tinyint、numeric、money、smallmoney、float、decimal、real)

      示例:

      select * from tablename
      where isnumeric(columnname)<> 1;
      go

      以上示例使用 isnumeric 返回所有非數值的數據行。

      2> isdate( expression )

      -- 如果 expression 是有效的 date、time 或 datetime 值,則返回 1;否則返回 0。
      示例:
      if isdate('2009-05-12 10:19:41.177'= 1
          print '有效的日期'
      else
          print '無效的日期'

      上面的示例使用 isdate 測試某一字符串是否是有效的 datetime。

      3> patindex( '%pattern%' , expression )

      -- 返回指定表達式中某模式第一次出現的起始位置;

      -- 如果在全部有效的文本和字符數據類型中沒有找到該模式,則返回零。

      'pattern' : 一個通配符字符串。pattern 之前和之后必須有 % 字符(搜索第一個或最后一個字符時除外)。
      expression : 通常為要在其中搜索指定模式的字符串數據類型列。
      示例:
      select patindex('%BB%','AA_BB_CC_DD_AA_BB_CC_DD')
      -- 返回:4

      上面示例返回的是第一個‘BB’的開始位置。

      其實,使用 charindex 函數也能實現上面示例的查詢,如下:

      select charindex('BB','AA_BB_CC_DD_AA_BB_CC_DD')
      --返回:4


      patindex 函數與 charindex 函數的區別:
      select patindex('%[0-9][A-Z]%''AA_BB_9C_DD_AA_9F_CC_DD')
      -- 返回:7 
      select charindex('%[0-9][A-Z]%','AA_BB_9C_DD_AA_9F_CC_DD')
      -- 返回:0

      看出來沒有?patindex 函數可以使用通配符,而charindex 函數不能。也就是說:patindex 函數功能更強大!


      4> newid( )

      -- 創建 uniqueidentifier 類型的唯一值。
      這個函數總是能返回一個新的GUID號碼,它永遠不會重復,而且毫無規律。
      示例:
      declare @myid uniqueidentifier
      set @myid = newid()
      print '@myid 的值是: '+ convert(varchar(255), @myid)

      -- @myid 的值是: 0B939411-4827-485E-884B-5BEB1699CFEE


      5> collate

      -- 一個子句,可應用于數據庫定義或列定義以定義排序規則,或應用于字符串表達式以應用排序規則轉換。
      collate 子句只能應用于 char、varchar、text、nchar、nvarchar 和 ntext 數據類型。
      示例:
      drop table #tempTalbe
      go
      create table #tempTalbe
      (
         _id    int,
         _name  varchar(30)
      )
      go
      insert into #tempTalbe values(1,'');
      insert into #tempTalbe values(2,'');
      insert into #tempTalbe values(3,'');

      select * from #tempTalbe
      order by _name
      collate latin1_general_cs_as_ks_ws asc;
      go
      /* 顯示結果:
      _id         _name
      ----------- ------------------------------
      1           中
      2           國
      3           人
      */

      select * from #tempTalbe 
      order by _name 
      collate Chinese_PRC_CS_AS_KS_WS asc;
      go
      /* 顯示結果:
      _id         _name
      ----------- ------------------------------
      2           國
      3           人
      1           中
      */

      注意:

      可以執行系統函數 fn_helpcollations 來檢索 Windows 排序規則和 SQL Server 排序規則的所有有效排序規則名稱的列表:

      select * from fn_helpcollations()


      6> sp_executesql 存儲過程
      建議您在執行字符串時,使用 sp_executesql 存儲過程而不要使用 execute 語句。

      由于此存儲過程支持參數替換,因此 sp_executesql 比 execute 的功能更多;

      由于 sql server 更可能重用 sp_executesql 生成的執行計劃,因此 sp_executesql 比 execute 更有效。

      示例:
      create table #tb_suer( id int)
      go
      insert into #tb_suer values(1234)
      go

      declare @tbname nvarchar(20)
      declare @sql nvarchar(500)
      set @tbname='#tb_suer'
      set @sql='select * from ' + @tbname
      execute sp_executesql @sql
      /* 結果:
      id
      -----------
      1234
      */

      上面示例演示了SQL語句的拼接。


      7> checksum
      --  返回按照表的某一行或一組表達式計算出來的校驗和值。 checksum 用于生成哈希索引。
      checksum ( * | expression [ ,...n ] )
      *    指定對表的所有列進行計算。如果有任一列是非可比數據類型,則 checksum 返回錯誤。
            非可比數據類型有 text、ntext、image、xml 和 cursor,還包括以上述任一類型作為基類型的 sql_variant。
      expression    除非可比數據類型之外的任何類型的表達式。
      示例:
      -- 找出在T1有,T表沒有的記錄。
      select * from t1 where checksum(*not in ( select checksum(*from t )

      上面示例,等于是把t1表里的一行數據hash和t表一行數據hash后相比,就是說兩個表里有沒有行完全相當的。

       

      posted on 2011-10-18 16:02  鋼鋼  閱讀(9310)  評論(17)    收藏  舉報

      導航

      主站蜘蛛池模板: 高清中文字幕国产精品| 国产成人精品日本亚洲| caoporn成人免费公开| 天堂中文8资源在线8| 国产精品中文字幕av| 女人扒开腿让男人桶到爽| 无人去码一码二码三码区| 三级网站视频在在线播放| 二连浩特市| japanese无码中文字幕| 久久国产精品亚洲精品99| 精品国产一区二区三区性色| 蜜桃av无码免费看永久| 亚洲欧洲一区二区三区久久 | 临夏县| 国产精品麻豆va在线播放| 亚洲一区二区三区在线激情| AV无码不卡一区二区三区| av中文无码乱人伦在线观看| 女人香蕉久久毛毛片精品| 神马视频| 亚洲人黑人一区二区三区| 无码免费大香伊蕉在人线国产 | 日韩中文字幕国产精品| 在线视频中文字幕二区| 国产免费午夜福利蜜芽无码| 亚欧乱色精品免费观看| 亚洲国内精品一区二区| 欧美牲交a免费| 国产激情精品一区二区三区| 国产精品午夜福利视频| 精品一区二区三区在线播放视频 | 与子敌伦刺激对白播放| 国产午夜福利不卡在线观看| 99精品视频在线观看婷婷| 国产精品视频中文字幕| 重口SM一区二区三区视频| 超碰成人精品一区二区三| 亚洲一区二区偷拍精品| 精品无码国产日韩制服丝袜| 亚洲国产在一区二区三区|