在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 tablename2> isdate( expression )
-- 如果 expression 是有效的 date、time 或 datetime 值,則返回 1;否則返回 0。示例:
if isdate('2009-05-12 10:19:41.177') = 13> patindex( '%pattern%' , expression )
-- 返回指定表達式中某模式第一次出現的起始位置;-- 如果在全部有效的文本和字符數據類型中沒有找到該模式,則返回零。
'pattern' : 一個通配符字符串。pattern 之前和之後必須有 % 字符(搜索第一個或最後一個字符時除外)。 expression : 通常為要在其中搜索指定模式的字符串數據類型列。示例:
select patindex('%BB%','AA_BB_CC_DD_AA_BB_CC_DD')上面示例返回的是第一個‘BB’的開始位置。
其實,使用 charindex 函數也能實現上面示例的查詢,如下:
select charindex('BB','AA_BB_CC_DD_AA_BB_CC_DD')看出來沒有?patindex 函數可以使用通配符,而charindex 函數不能。也就是說:patindex 函數功能更強大!
4> newid( )
-- 創建 uniqueidentifIEr 類型的唯一值。 這個函數總是能返回一個新的GUID號碼,它永遠不會重復,而且毫無規律。示例:
declare @myid uniqueidentifIEr5> collate
-- 一個子句,可應用於數據庫定義或列定義以定義排序規則,或應用於字符串表達式以應用排序規則轉換。 collate 子句只能應用於 char、varchar、text、nchar、nvarchar 和 ntext 數據類型。示例:
drop table #tempTalbe可以執行系統函數 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)-- 返回按照表的某一行或一組表達式計算出來的校驗和值。 checksum 用於生成哈希索引。
checksum ( * | expression [ ,...n ] )示例:
-- 找出在T1有,T表沒有的記錄。上面示例,等於是把t1表裡的一行數據hash和t表一行數據hash後相比,就是說兩個表裡有沒有行完全相當的。