SQLServer系统函数介绍

没有口水与汗水,就没有成功的泪水。早安!有时,我们以为赢了,其实,我们输了!因为,我们赢了"面子",却输了"里子"!早安!

一、常用函数:

  • APP_NAME: 返回当前会话的应用程序名称(如果应用程序进行了设置)。
SELECT APP_NAME()
  • COALESCE: 返回其参数中第一个非空表达式
SELECT COALESCE(NULL,NULL,123,NULL)
  • COL_LENGTH(table,column):返回table表中column字段的长度;
SELECT COL_LENGTH('person','gender'),COL_LENGTH('person','FirstName');
  • COL_NAME(TABLE_ID,COLUMN_ID):返回指定表中指定字段的名称;
SELECT COL_NAME(OBJECT_ID('person'),1);---返回person表中第1个字段的名称;
  • COLLATIONPROPERTY: 返回给定排序规则的属性
  • CURRENT_TIMESTAMP: 返回当前的日期和时间。此函数等价于 GETDATE()
  • CURRENT_USER: 返回当前的用户。

此函数等价于 USER_NAME()

SELECT CURRENT_USER
  • DATALENGTH(x): 返回字段x的数据的实际长度,即字节数,NULL的长度为NULL;
SELECT DATALENGTH('id'),DATALENGTH('Gender') FROM person WHERE id=2;
  • @@ERROR: 返回最后执行的 Transact-SQL 语句的错误代码
  • fn_helpcollations: 返回 Microsoft® SQL Server™ 2000 支持的所有排序规则的列表。
  • fn_servershareddrives: 返回由群集服务器使用的共享驱动器名称
  • fn_virtualfilestats: 返回对数据库文件(包括日志文件)的 I/O 统计
  • FORMATMESSAGE: 从 sysmessages 现有的消息构造消息。

FORMATMESSAGE 与 RAISERROR 语句的功能相似;但 RAISERROR 立即输出消息而 FORMATMESSAGE: 返回编辑后的信息供进一步处理

  • GETANSINULL: 返回会话的数据库的默认为空性。

该函数对ANSI空值NULL返回1,如果没有定义ANSI空值NULL,则返回0;

SELECT GETANSINULL('test2'),GETANSINULL('person'); ---test2是数据库,person是数据表;
  • HOST_ID: 返回工作站标识号。

返回值类型为CHAR(10);

SELECT HOST_ID();  --使用该函数可以记录那些想数据表中插入数据的计算机终端的ID;
  • HOST_NAME: 返回工作站名称。
SELECT HOST_NAME();
  • IDENT_INCR: 返回增量值(返回形式为 numeric(@@MAXPRECISION,0)),该值是在带有标识列的表或视图中创建标识列时指定的
  • IDENT_SEED: 返回种子值(返回形式为 numeric(@@MAXPRECISION,0)),该值是在带有标识列的表或视图中创建标识列时指定的
  • IDENTITY(函数): 只用在带有 INTO table 子句的 SELECT 语句中,以将标识列插入到新表中。

尽管类似,但是 IDENTITY 函数不是与 CREATE TABLE 和 ALTER TABLE 一起使用的 IDENTITY 属性。(自动采番时可以起到作用)

  • ISDATE: 确定输入表达式是否为有效的日期
  • ISNULL: 使用指定的替换值替换 NULL
SELECT AVG(ISNULL(id,0)) FROM dbo.school AS s
  • ISNUMERIC: 确定表达式是否为一个有效的数字类型
PRINT ISNUMERIC('1223A')
  • NEWID: 创建 uniqueidentifier 类型的唯一值
  • NULLIF: 如果两个指定的表达式相等,则返回空值。
SELECT NULLIF('AA','AA')
  • PARSENAME: 返回对象名的指定部分。可以检索的对象部分有对象名、所有者名称、数据库名称和服务器名称
  • PERMISSIONS: 返回一个包含位图的值,表明当前用户的语句、对象或列权限。
  • @@ROWCOUNT: 返回受上一语句影响的行数
  • ROWCOUNT_BIG: 返回受执行的最后一个语句影响的行数。该函数的功能与 @@ROWCOUNT 一样,除非 ROWCOUNT_BIG 的返回类型是 bigint。
  • SERVERPROPERTY: 返回有关服务器实例的属性信息
  • SESSIONPROPERTY: 返回会话的 SET 选项设置
  • SESSION_USER: 是一个 niladic 函数,允许在未指定默认值时将系统为当前会话的用户名提供的值插入到表中。还允许在查询、错误信息等中使用用户名
  • SCHEMA_NAME: 查看Schema的ID和Name
  • STATS_DATE: 返回最后一次更新指定索引统计的日期
SELECT STATS_DATE(OBJECT_ID('school'),1)
  • SYSTEM_USER: 返回当前系统用户名
  • SUSER_ID():根据登录名返回用户的SID(安全标识号)
SELECT SUSER_SID(),SUSER_SID('COMPU\Administrator'); --不带参数时返回当前用户的ID,也可以带参数指定用户;
  • SUSER_SNAME():返回与安全标识符关联的登录名

返回值类型为NVARCHAR(128);

SELECT SUSER_SNAME(),SUSER_SNAME(0x010500000000000515000000C1289E4023B53F66B8323512E9030000);
  • @@TRANCOUNT: 返回当前连接的活动事务数
  • USER_ID():根据指定用户名返回数据库用户的ID,

如果没有指定用户名,则返回当前用户的数据库ID;

SELECT USER_ID();
  • USER_NAME():根据与数据库用户关联的ID返回数据库用户名,

返回值类型为nvarchar(256);

SELECT USER_NAME(),USER_NAME(USER_ID());

二、插入后返回值的方法:

  • SCOPE_IDENTITY: 返回为当前会话和当前作用域中的任何表最后生成的标识值。 SELECT SCOPE_IDENTITY();(推荐)
  • @@IDENTITY: 返回为当前会话的所有作用域中的任何表最后生成的标识值。 SELECT @@Identity;
  • IDENT_CURRENT: 返回为任何会话和任何作用域中的特定表最后生成的标识值。SELECT IDENT_CURRENT('table_name');

到此这篇关于SQL Server系统函数的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持。

您可能有感兴趣的文章
SqlServer生成连续数字根据指定的数字操作

SQLServer中JSON文档型数据的查询问题如何解决

SQLServer备份数据库的完整步骤

在SQLServer中如何使用TryCatch处理异常的示例详解

SQLServer序列SEQUENCE用法介绍