Sql Server函數全解(五)之系統函數


 系統信息包括當前使用的數據庫名稱,主機名,系統錯誤消息以及用戶名稱等內容。使用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();
復制代碼

轉自:http://www.cnblogs.com/selene/p/4470626.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM