• 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();
  • 相关阅读:
    Linq聚合操作之Aggregate,Count,Sum,Distinct源码分析
    Linq分区操作之Skip,SkipWhile,Take,TakeWhile源码分析
    Linq生成操作之DefautIfEmpty,Empty,Range,Repeat源码分析
    Linq基础操作之Select,Where,OrderBy,ThenBy源码分析
    PAT 1152 Google Recruitment
    PAT 1092 To Buy or Not to Buy
    PAT 1081 Rational Sum
    PAT 1084 Broken Keyboard
    PAT 1077 Kuchiguse
    PAT 1073 Scientific Notation
  • 原文地址:https://www.cnblogs.com/selene/p/4470626.html
Copyright © 2020-2023  润新知