--> Title : T-SQL 入门 攻略 之 7 - 常見系統函數
--> Author : wufeng4552
--> Date : 2010-0 4 - 14
1 :獲取服務器名與 ID
select host_name () -- 獲取服務器端計算機名稱
/*
GOLD-MIS06
*/
select host_id () -- 獲取服務器端計算機標識 ID
/*
1748
*/
2 :獲取數據庫名與 ID
select db_Name ()
-- 獲取數據庫名稱
-- 格式為 db_name([database_id]) 表示要返回由 database_id 指定的 ID 的
-- 數據庫名稱 , 如果省略則返回當前數據庫名稱
select db_id ()
-- 獲取數據庫 ID
-- 格式為 db_id('database_name') 表示要返回由 database_name 指定的數據庫 ID
-- 如果省略則返回當前數據庫 ID
select dbid 數據庫 ID,
db_name ( dbid ) 數據庫名
from master.. sysdatabases
order by dbid
-- 以上返回所有數據庫 ID 與數據庫名
3 :獲取應用程序名稱
select app_name ()
-- 該函數用於獲取當前會話的應用程序名稱
-- 返回類型為了 nvarchar(128)
/*
Microsoft SQL Server Management Studio - 查詢
(1 個資料列受到影響 )
*/
4 :獲取數據庫用戶名與 ID
select user_name ()
select user_name ( 0)
select user_name ( 1)
select user_name ( 2)
select user_name ( 3)
-- 語法格式為 :user_name([ID]), 其中 ID 是與數據庫用戶關聯的標識號
-- 該函數返回由 ID 指定的標識號的數據庫用戶名 , 如果被省略則返回當
-- 前數據庫用戶名稱
select user_id ( 'public' )
select user_id ( 'dbo' )
select user_id ()
-- 語法格式為 :user_id('user') 其中 user 表示用戶名
-- 該函數返回由 user 指定用戶名的數據庫用戶 ID,
-- 如果省略則返回當前數據庫用戶的 ID
5 :獲取數據庫對象的名稱與 ID
select object_name ( 4, 1)
/*object_name(object_id[,database_id]) 其中 object_id 表示對象的 ID
database_id 表示要在其中查找對象的數據庫 ID, 返回類型為 sysname.
*/
select object_id ( 'dbo.tb' , 'U' )
/* 格式如下 :object_id('[database_name.[schema_name].|schema_name.]object_nane'[,type'])
object_name 對象的名稱
schema_name 架構的名稱
type 表示架構範圍內對象的類型
*/
6 :獲取登錄名
select suser_sname ()
select suser_sname ( 0x01)
-- 語法格式為 suser_sname(server_user_sid)server_user_sid 表示
-- 安全標識號類型為 varbinary(85), 如果未指定 , 則返回當前用戶
-- 登錄的登錄名
7 :獲 取 架構名稱
select object_schema_name( object_id ( 'tb' ))
/* 語法格式為 object_schema_name(object_id[,database_id])
object_id 表示對象 ID,database_id 表示要在其中查找對象的數據庫 ID
返回類型為 sysname
*/
select
object_schema_name( object_id ) as 架構名
from master. sys.objects
8 :獲取數據長度 ( 字節數 )
declare @s1 varchar ( 15), @s2 nvarchar ( 15), @s3 char ( 15), @s4 nchar ( 15)
select @s1= ' 長度測試 test' , @s2= N' 長度測試 test' , @s3= ' 長度測試 test' , @s4= N' 長度測試 test'
select datalength ( @s1) s1, datalength ( @s2) s2, datalength ( @s3) s3, datalength ( @s4) s4
/*
s1 s2 s3 s4
----------- ----------- ----------- -----------
12 16 15 30
綜上可以看出如果數據類型為 unicode 則每個字符均占兩個字節 ( 變長 ), 非 unicode 漢字占兩個
英文占一個 ( 變長 ); 而定長的 char(15) 占個 ,nchar(15) 占個
*/
9 :獲取字段定義長度
select col_length ( 'student' , 's_name' ) s_name 定義長度
select col_length ( 'student' , 'S_no' ) S_no 定義長度
-- 語法格式為 :col_length('table','column')
10 :獲取字段名稱
select col_name ( object_id ( 'student' ), 1)
-- 語法格式為 :col_name(table_id,column_id)
--table_id 為表對象 ID,column_id 為字段 ID