T-SQL 查詢中使用的函數之系統函數

來源:互聯網
上載者:User
函數
查詢中使用的函數

  在查詢語句中,不僅可查詢表中列的值而且可以使用內建函式查詢資料庫中不同類型的資訊。可以在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,否則返回0;unsuspend:用以喚醒資料庫中掛起的任務並且當最後機會值被超過時使用該機會值無效;reserve:返回要成功地轉儲指定大小的一個交易記錄時所需的自由日誌頁的數目。

Lct_admin

({{“lastchance”|”logfull”|”unsuspend”}

,database_id}|

“reserve”

,log_pages})

分配給表或索引的頁數

Reserved_pgs

(object_id,{doampg|ioampg})

表中行數的估計值

Rowent

(doampg)

資料庫物件ID號

Object_id

(“objname”)

資料庫物件名

Object_name

(obj_id)

從表syslogins中返回伺服器用的ID號,如果沒有給出參數server_user_name的值則返回目前使用者的伺服器ID號

Suser_id

([server_user_name])

返回伺服器使用者名稱,伺服器使用者的ID號儲存在表syslogins中,如果沒有給出參數server_user_id的值,則返回目前使用者名。

Tsequal

(timestamp,timestamp2)

在瀏覽模式下,比較timestamp的值以阻止提交那些被修改過的值。Timestamp是被瀏覽行的時間標誌;timestamp2是儲存行的時間標誌。該函數允許使用者不調用db_library而使用瀏覽模式。

Used_pgs

(object_id,doampg,ioampg)

由表和聚簇索引使用的列數

User

 

使用者名稱

User_id

([user_name])

使用者的ID號。報告當前資料庫中的使用者ID號,如果沒有給出參數user_name,返回目前使用者的ID號。

User_name

([user_id])

返回與當前資料庫的使用者ID號相對應的使用者名稱。如果沒有提供參數user_id的值,則返回目前使用者名。

Valid_name

(character_expression)

如果character_expression是無效的標識符(非法字元或長度超過了30),則返回0;否則返回非0數值

Valid_user

(server_user_id)

如果指定的ID號在Adaptive Server的至少一個資料庫中有其對應的使用者名稱或別名,則返回1;只有sa_role或sso_role角色的使用者才可以使用該函數。

 

例子:

1、找出表titles中title列的長度

slelect “標題長度”=col_length(“article”,”title”)

  結果:

  標題長度

  -----

  120

2、找出表article中title列中資料的長度

  select length=datalength(title),title

  from article

  結果:

length    title

24          軟透露其internet 策略

20                            A推出兩種網路新軟體

21                            IBM發布新版SYSTEMVIEW

3、尋找所有作家的工資,如果工資為NULL值則替換成$10.00

   select isnull(salary,$10.00)

   from auths

結果:

——

120.00

100.00

110.00

10.00

4、查出系統資料表sysusers中的使用者ID為1的使用者名稱

select name form sysusers

where name=user_name(1)

結果:

name

——

dbo

 


相關文章

Beyond APAC's No.1 Cloud

19.6% IaaS Market Share in Asia Pacific - Gartner IT Service report, 2018

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。