系統資訊包括當前使用的資料庫名稱,主機名,系統錯誤訊息以及使用者名稱稱等內容。使用SQL SERVER中的系統函式可以在需要的時候獲取這些資訊。下面介紹系統函式的作用和使用方法。
1.返回表中指定欄位的長度
COL_LENGTH(table,column)函式返回表中指定欄位的長度值。其返回值為int型別,table為要確定其列長度資訊的表的名稱,是nvarchar型別的表示式。column為要確定其長度的列的名稱,是nvarchar型別的表示式.
【例】先建立一個學生表student。
create table student (
i_sid int primary key identity(1,1),
str_stuName varchar(10)
);
SELECT COL_LENGTH('student','str_stuName');
2.返回表中指定欄位的名稱
COL_NAME(table_id,column_id)函式返回表中指定欄位的名稱。table_id是表的標識號,column_id是列的標識號,型別為int.
【例】SELECT COL_NAME(OBJECT_ID('student'),1);
3.返回資料表示式的資料的實際長度函式
DATALENGTH(expression)函式返回資料表示式的資料的實際長度,即位元組數。其返回值型別為int。null的長度為null。expression可以是仁和資料型別的表示式。
【例】SELECT DATALENGTH(str_stuName) FROM student WHERE i_sid=1;
4.返回資料庫的編號
DB_ID(database_name)函式返回資料庫的編號,其返回值為SMALLINT型別,如果沒有指定database_name,則返回當前資料庫的編號。
【例】SELECT DB_ID('master') ,DB_ID('test_db');
5.返回資料庫的名稱
DB_NAME(database_id)函式返回資料庫的名稱。其返回值型別為nvarchar(128).database_id是smallint型別的資料。如果沒有指定database_id,返回當前資料庫的名稱。
【例】USE master;
SELECT DB_NAME('master'),DB_NAME(DB_ID('sample_db'));
USE 語句將master選擇為當前資料庫,因此DB_NAME()返回值為當前資料庫master,DB_NAME(DB_ID('sample_db'))返回值sample_db本身.
6.返回資料庫當前預設的null值
getAnsiNull()(database_name)函式返回當前資料庫預設的NULL值,其返回值型別為int。getAnsiNull()函式對ANSI空值NULL返回1;如果沒有定義ANSI空值,返回0;
【例】SELECT GETANSINULL('master');
如果指定資料庫為空性,即允許為空值,並且,沒有顯示定義列或資料型別為空性,則GETANSINULL返回1;
7.返回伺服器端計算機的標識號
HOST_ID()函式返回伺服器端計算機的標識號。其返回值型別為char(10).
【例】檢視當前伺服器端計算機的標識號,如下:
SELECT HOST_ID();
使用HOST_ID()函式可以記錄那些向資料庫中插入資料的計算機終端ID.
8.返回伺服器端計算機名稱
HOST_NAME()函式返回伺服器端計算機的名稱,其返回值型別為nvarchar(128);
【例】檢視當前伺服器端計算機的名稱,如下:
SELECT HOST_NAME();
9.返回資料庫物件的編號
OBJECT_ID(database_name.schema_name.object_name,object_type)函式返回資料庫物件的編號,其返回值型別為int。object_name為要使用的物件,它的資料型別為varchar或nvarchar。如果object_name的資料型別為varchar,則它將隱士轉換為nvarchar。可以選擇是否指定資料庫和架構名稱。object_type指定架構範圍的物件型別.
【例】返回sample_db資料庫中student表的物件ID
SELECT OBJECT_ID('sample_db.dbo.student');
10.返回使用者的SID(安全標識號)
SUSER_SID(login_name)函式根據使用者的登入名返回使用者的SID(Security Identification Number,安全標識號)。其返回值型別為int,如果不指定login_name,則返回當前使用者的sid.
【例】檢視當前使用者的安全標識號,輸入語句如下
SELECT SUER_SID();
11.返回使用者的登入名
SUSER_SNAME([server_user_id])函式返回與安全標識號(SID)關聯的登入名,如果沒有指定server_user_id,則返回當前使用者的登入名。其返回值型別為nvarchar(128);
【例】返回與windows安全標識號關聯的登入名,如下:
SELECT SUSER_SNAME(0x01),SUSER_SNAME() ;
12.返回資料庫物件的名稱
OBJECT_NAME(object_id[,database_id])函式返回資料庫物件的名稱。database_id要在其中查詢物件的資料庫的ID,資料型別為int。object_id為要使用的物件ID,資料型別為int,假定為指定資料庫的物件,如果不指定database_id,則假定為當前資料庫上下文中的架構範圍內的物件,其返回值型別為sysname;
【例】檢視sample_db資料庫中物件ID值為325576198的物件名稱
SELECT OBJECT_NAME(,DB_ID('sample_db')), OBJECT_ID('sample_db.dbo.student');
13.返回資料庫使用者的標識號
USER_ID(user)函式根據使用者名稱返回資料庫使用者的ID。其返回值為int型別,如果沒有指定user,則返回當前使用者的資料庫ID。
【例】顯示當前使用者的資料庫標識號,輸入如下語句
USE sample_db;
SELECT USER_ID();
14.返回資料庫使用者名稱
USER_NAME(id)函式根據與資料庫使用者關聯的ID號返回資料庫使用者名稱。其返回值型別為nvarchar(256).如果沒有指定id,則返回當前資料庫的使用者名稱。
【例】查詢當前資料庫名稱,輸入如下語句
USE sample_db;
SELECT USER_NAME();
上面例子的sql指令碼
--系統函式 create database sample_db; use sample_db; create table student ( i_sid int primary key identity(1,1), str_stuName varchar(10) ); --1.返回表中指定欄位的長度 SELECT COL_LENGTH('student','str_stuName'); --2.返回表中指定欄位的名稱 SELECT COL_NAME(OBJECT_ID('student'),1); --3.返回資料表示式的資料的實際長度函式 insert into student values('Jamse'); select *from student SELECT DATALENGTH(str_stuName)FROM student where i_sid=1; --4.返回資料庫的編號 SELECT DB_ID('master') ,DB_ID('sample_db'); --5.返回資料庫的名稱 use master SELECT DB_NAME(),DB_NAME(DB_ID('sample_db')); --6.返回資料庫當前預設的null值 SELECT GETANSINULL('master'); --7.返回伺服器端計算機的標識號 SELECT HOST_ID() --8.返回伺服器端計算機名稱 SELECT HOST_NAME(); --9.返回資料庫物件的編號 SELECT OBJECT_ID('sample_db.dbo.student'); --10.返回使用者的SID(安全標識號) SELECT SUSER_SID('sa'),SUSER_SID(); --11.返回使用者的登入名 SELECT SUSER_SNAME(0x01),SUSER_SNAME(); --12.返回資料庫物件的名稱 SELECT OBJECT_NAME(325576198,DB_ID('sample_db')), OBJECT_ID('sample_db.dbo.student'); --13.返回資料庫使用者的標識號 USE sample_db; SELECT USER_ID(); --14.返回資料庫使用者名稱 USE sample_db; SELECT USER_NAME();