在查詢語句中,不僅可查詢表中列的值而且可以使用內部函數查詢數據庫中不同類型的信息。可以在SELECT列表,WHERE子句和任何允許表達式的地方使用內部函數。這些函數都是T-SQL對SQL的擴展。Adaptive Server提供的內部函數可以分成以下幾類:
l 系統函數。返回數據庫中的信息;
l 字符串函數。用於處理字符串或字符串表達式;
l text函數。用於處理text和image類型的數據;
l 數學類型。用於處理三角、幾何以及其它數據處理的函數;
l 日期函數。處理datetime和smalldatetime類型的數據;
l 數據類型轉換函數(convert)。用於將一種數據類型轉換成另一種數據類型,也可將日期格式化成各種形式。
l 安全函數。返回安全服務和用戶自定義角色的信息
一、系統函數
系統函數從數據庫返回特定的信息,它們中的大多數提供了查詢系統表的簡便方式。
系統函數的一般語法:
select function_name ( argument[s] )
系統函數可以用在選擇項裡、where子句裡以及任何允許表達式存在的地方。例如:如果要查詢“zyf”的用戶標示號,則輸入:
select “用戶標示號” =user_id ( “zyf” )
結果:
用戶標示號
——
3
一般來說,函數名表示裡將返回什麼樣的信息。
User_name用ID號作參數而返回用戶的名字。如下,如果查詢ID號為3的用戶名
Select “用戶名” = user_name(3)
結果:
用戶名
——
zyf
找出當前用戶的名字(也就是正在使用的用戶名)
select user_name()
結果:
用戶名
——
dbo
Adaptive Server按照如下的規則處理用戶標示符:
l 當系統管理員成為他使用的數據庫的所有者時,其登陸用戶ID被指定為1;
l guest用戶的登陸用戶ID總是-1
l 數據庫所有者的用戶總是dbo,他的用戶ID是1;
l guest用戶的ID是2
系統函數表
函數名
參數
返回結果
Col_name
(object_id,column_id[,database_id])
列名
Col_length
(object_name,column_name)
列的定義長度(使用datalength是查看實際數據的長度)
curunreservedpgs
(dbid,lstart,unreservedpgs)
磁盤片中的空閒頁數。如果數據庫是打開的,則該值來自於內存;如果數據庫沒有打開則該值來自於系統表sysusages中列unreservedpgs
Data_pgs
(object_id,{doampg | ioampg})
被表(doampg)或索引(ioampg)使用的頁數。該結果不包括內部結果使用的頁數
Datalength
(expression)
返回expression的長度。Expression可以是列名也可以是字符串常量。如果是列名則返回列中實際數據的長度。
Db_id
([database_name])
數據庫的ID號。數據庫名必須為字符表達式,如果數據庫名為字符常量,則必須用引號將其引起來。如果沒有給出數據庫名,則返回當前數據庫的ID號
Db_name
([database_id])
數據庫名。Database_id必須是數值表達式如果沒有給出database_id,則返回當前數據庫名。
Host_id
()
客戶進程(非Adaptive Server進程)的當前主機名
Host_name
()
索引列名。如果object_name 不是表名或視圖名,則返回NULL
Index_col
(object_name,index_id,key_#[,user_id])
當expression1為NULL時,用expression2的值來代替expression1的值。表達式的值必須可隱式地轉化,否則必須使用convert函數
Isnull
(expression1,expression2)
管理日志段的最後機?值。Lastchance:在指定的數據庫中創建一個最後機會值;當指定數據庫的最後機會值被超過時返回1,