Sql Server函数全解(五)之系统函数

本文详细介绍了SQL Server中的系统函数,包括返回表字段长度、字段名称、数据长度、数据库编号和名称、默认NULL值、服务器ID和名称、数据库对象ID、用户SID和登录名等,帮助理解如何获取数据库系统的各种信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容。使用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');

img

2.返回表中指定字段的名称

  COL_NAME(table_id,column_id)函数返回表中指定字段的名称。table_id是表的标识号,column_id是列的标识号,类型为int. 【例】SELECT COL_NAME(OBJECT_ID('student'),1);

img

3.返回数据表达式的数据的实际长度函数

  DATALENGTH(expression)函数返回数据表达式的数据的实际长度,即字节数。其返回值类型为int。null的长度为null。expression可以是仁和数据类型的表达式。

【例】SELECT DATALENGTH(str_stuName) FROM student WHERE i_sid=1;

img

4.返回数据库的编号

  DB_ID(database_name)函数返回数据库的编号,其返回值为SMALLINT类型,如果没有指定database_name,则返回当前数据库的编号。 【例】SELECT DB_ID('master') ,DB_ID('test_db');

img

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本身.

img

6.返回数据库当前默认的null值

 getAnsiNull()(database_name)函数返回当前数据库默认的NULL值,其返回值类型为int。getAnsiNull()函数对ANSI空值NULL返回1;如果没有定义ANSI空值,返回0; 【例】SELECT GETANSINULL('master'); 如果指定数据库为空性,即允许为空值,并且,没有显示定义列或数据类型为空性,则GETANSINULL返回1;

img

7.返回服务器端计算机的标识号

 HOST_ID()函数返回服务器端计算机的标识号。其返回值类型为char(10).

【例】查看当前服务器端计算机的标识号,如下:  SELECT HOST_ID(); 使用HOST_ID()函数可以记录那些向数据库中插入数据的计算机终端ID.

img

8.返回服务器端计算机名称

 HOST_NAME()函数返回服务器端计算机的名称,其返回值类型为nvarchar(128); 【例】查看当前服务器端计算机的名称,如下:  SELECT HOST_NAME();

img

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');

img

10.返回用户的SID(安全标识号)

 SUSER_SID(login_name)函数根据用户的登录名返回用户的SID(Security Identification Number,安全标识号)。其返回值类型为int,如果不指定login_name,则返回当前用户的sid. 【例】查看当前用户的安全标识号,输入语句如下  SELECT SUER_SID();

img

11.返回用户的登录名

 SUSER_SNAME([server_user_id])函数返回与安全标识号(SID)关联的登录名,如果没有指定server_user_id,则返回当前用户的登录名。其返回值类型为nvarchar(128); 【例】返回与windows安全标识号关联的登录名,如下: SELECT SUSER_SNAME(0x01),SUSER_SNAME() ;

img

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');

img

13.返回数据库用户的标识号

 USER_ID(user)函数根据用户名返回数据库用户的ID。其返回值为int类型,如果没有指定user,则返回当前用户的数据库ID。 【例】显示当前用户的数据库标识号,输入如下语句 USE sample_db; SELECT USER_ID();

img

14.返回数据库用户名

 USER_NAME(id)函数根据与数据库用户关联的ID号返回数据库用户名。其返回值类型为nvarchar(256).如果没有指定id,则返回当前数据库的用户名。 【例】查找当前数据库名称,输入如下语句  USE sample_db;  SELECT USER_NAME();

img

上面例子的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();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

淋风沐雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值