• (4.37)sql server中的系统函数


     系统信息包括当前使用的数据库名称,主机名,系统错误消息以及用户名称等内容。使用SQL SERVER中的系统函数可以在需要的时候获取这些信息。下面介绍系统函数的作用和使用方法。

    1.列长度(col_length)

      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(tab_id,column_id))

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

    3.返回字节数长度(datalength),返回表达式字符个数(len)

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

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

     

    4.数据库ID( db_id(db_name) )  

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

    5.数据库名称( db_name(db_id) )  

      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())

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

    7.计算机ID( host_id() )

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

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

    8.计算机名称( host_name() )

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

    9.数据库对象ID( object_id(object_name) )

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

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

    11.返回用户的登录名( system_user )

    用这个比较好 SYSTEM_USER

      

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

    12.数据库对象的名称( object_name(object_id) )

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

    14.当前数据库的架构名( user_name() )

     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

  • 相关阅读:
    scrapy爬虫框架学习
    python:面向对象—— __slots__来限制实例的属性命名范围
    列表list 的常用操作
    python replace()用法
    python 字符串 空字符串 len()
    python 字符串 编码问题
    python中语句、函数、类、模块、包之间的关系
    matplotlib 绘制正玄余玄曲线
    Es6/CommonJs/AMD模块系统的差异以及用法
    BOM和DOM的区别
  • 原文地址:https://www.cnblogs.com/gered/p/12362617.html
Copyright © 2020-2023  润新知