T-SQL系统函数:查看数据修改信息

日期: 2010-08-29 作者:Robert Sheldon翻译:冯昀晖 来源:TechTarget中国 英文

SQL Server内建有可以支持你执行各种任务的函数,比如转换数据,操作字符串值,以及执行数学计算的函数。一些SQL Server函数被归类为系统函数,这些函数支持你查看关于更新和插入操作的信息,提取服务器属性设置,访问当前会话及其用户的详细信息。你还可以利用系统函数执行许多语言相关的任务。   本文将为你介绍SQL Server中包含的许多系统函数。

尽管我不能覆盖到每一个函数,我会描述尽可能多的函数,并介绍不同类型的函数以便给你一个全面的基础了解。   注意:本文中有一些例子,我在本地SQL Server 2008实例已安装的“AdventureWorks2008”示例数据库环境中运行了这……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SQL Server内建有可以支持你执行各种任务的函数,比如转换数据,操作字符串值,以及执行数学计算的函数。一些SQL Server函数被归类为系统函数,这些函数支持你查看关于更新和插入操作的信息,提取服务器属性设置,访问当前会话及其用户的详细信息。你还可以利用系统函数执行许多语言相关的任务。

  本文将为你介绍SQL Server中包含的许多系统函数。尽管我不能覆盖到每一个函数,我会描述尽可能多的函数,并介绍不同类型的函数以便给你一个全面的基础了解。

  注意:本文中有一些例子,我在本地SQL Server 2008实例已安装的“AdventureWorks2008”示例数据库环境中运行了这些例子。你也可以在SQL Server2005上运行这些例子,但是要确保根据需要修改数据库名称。同时,如果你在SQL Server 2005上运行这些例子,你的结果中有一些会与本文中展示的结果有细微的差异。

  查看有关数据修改的信息

  SQL Server的一些系统函数支持获取你的更新和插入操作的明细信息。例如,你可以获取插入到某个表中的最后一个标识值,或者对某个表增加或者更新的行数。要展示这些函数如何使用,我定义了下面的表并给它填充了几行数据:

  USE AdventureWorks2008;
  IF OBJECT_ID('TableA', 'U') IS NOT NULL
  DROP TABLE dbo.TableA;
  CREATE TABLE dbo.TableA
  (
  ColA INT IDENTITY(101, 100) NOT NULL,
  ColB VARCHAR(20) NOT NULL
  );
  INSERT INTO TableA (ColB) VALUES('red');
  INSERT INTO TableA (ColB) VALUES('blue');
  INSERT INTO TableA (ColB) VALUES('green');
  INSERT INTO TableA (ColB) VALUES('yellow');
  INSERT INTO TableA (ColB) VALUES('orange');
  SELECT * FROM TableA;

  下面是非常简单的一个表,该表中填充了五行数据。请注意“ColA”列被定义为一个身份列,起始值为“101”,增量为“100”。最后一个“SELECT语句”执行后产生如下结果:

ColAColB
101red
201blue
301green
401yellow
501orange

  现在,我们来看一个例子,其中使用了几个系统函数提取关于刚插入上面那个表的数据相关的信息。下面的“SELECT语句”包括五个函数,其中三个与身份列值有关,而另两个与行数有关:

  SELECT
  IDENT_CURRENT('TableA') AS LastValue,
  IDENT_SEED('TableA') AS SeedValue,
  IDENT_INCR('TableA') AS IncrValue,
  @@ROWCOUNT AS RowsAffected,
  ROWCOUNT_BIG() AS BigRowsAffected;

  第一个函数是“IDENT_CURRENT”,它提取插入表“TableA”的最后一个身份值。如你所见,表“TableA”被指定为该函数的一个入参。该函数返回的信息与添加数据时的会话无关,也与添加时执行的语句范围无关。这一点非常重要,因为SQL Server支持其他身份相关的函数,包括专门针对当前会话(@@IDENTITY)和当前范围和会话(SCOPE_IDENTITY)的函数。

  上面的例子中接下来的两个函数返回指定表中身份列的设置信息。“IDENT_SEED”函数返回起始值,而“IDENT_INCR”函数返回增量值。下面的结果集包括由这三个身份相关函数返回的值:

LastValueSeedValueIncrValueRowsAffectedBigBigRowsAffected
50110110055

  正如你所预料的,插入表“TableA”的最后一个身份值是“501”,起始值是“101”,而增量值是“100”。

  现在,我们再来看看本例中接下来的两个函数。“@@ROWCOUNT ”函数返回最后一个语句影响的行数。“ROWCOUNT_BIG”函数也做同样的事情,唯一区别是返回值类型是“bigint”。如果你预计影响的行数会多于20亿条数据,你应该使用这个函数。

  要注意,这两个函数都不是关联于某个表的,因为这两个函数基于最后一条执行的语句获取数据。也就是说,如果给某个表插入了200行,该函数会返回200。如果“SELECT”语句返回30行,那么该函数返回值就是30。在上面的例子中,两个函数返回的值都是5,因为最后运行的是一条“SELECT”语句,该语句返回5行数据。

作者

Robert Sheldon
Robert Sheldon

自由技术撰稿人和技术咨询专家,曾出版和发布若干本书籍、文章和培训教材,重点关注Windows、数据库、商务智能等。

相关推荐

  • T-SQL系统函数:查看一般信息

    “CURRENT_TIMESTAMP ”函数返回从操作系统获取的时间戳,而“GETANSINULL”函数返回当前会话当前数据库的默认为空。

  • T-SQL系统函数:查看会话信息

    除了利用T-SQL系统函数查看用户信息之外,你还可以查看有关当前会话的信息(可以包括会话用户)。

  • T-SQL系统函数:利用语言工具

    “ISDATE ”函数识别作为入参传递的值是否是合法的日期时间值,而“ISNUMERIC ”函数识别入参传递的值是否是合法的数值。

  • T-SQL系统函数:查看用户信息

    SQL Server还支持专门针对数据库用户和用户身份号码的几个函数。这些函数非常简单,一些可以返回当前数据库用户的名称,另外一些可以返回当前用户的数据库ID。