例4-80:

·DATALENGTH()
DATALENGTH()
函数语法如下:
DATALENGTH (<expression>)
DATALENGTH() 函数返回数据表达式的数据的实际长度。其返回值
类型为INT。DATALENGTH() 函数对VARCHAR、 VARBINARY、 TEXT、 IMAGE、 NVARCHAR和NTEX 等能存储变动长度数据的数据
类型特别实用。NULL 的长度为NULL。
例4-81:

· DB_ID()
DB_ID() 函数语法如下:
DB_ID (['database_name'])
DB_ID() 函数返回
数据库的编号。其返回值为SMALLINT 类型。如果没有指定database_name, 则返回当前
数据库的编号。
例4-82:

·DB_NAME()
DB_NAME() 函数语法如下:
DB_NAME (database_id)
DB_NAME() 函数返回数据库的名称.其返回值类型为NVARCHAR (128). database_id是SMALLINT 类型的数据.如果没有指定database_id, 则返回当前数据库的名称.
例4-83:

· FORMATMESSAGE()
FORMATMESSAGE() 函数语法如下:
FORMATMESSAGE (<message_number>, <param_value>[, ...n])
FORMATMESSAGE() 函数用于从系统信息表sysmessages 中挑选一条现存的信息,
再将其格式转换为用户需要的形式.其功能类似于RAISERROR 命令,不同的是RAISERROR命令立即打印出信息,而FORMATMESSAGE() 函数返回编辑过的信息给调用它的
程序.其返回值类型为NVARCHAR.
其中message_number 是存储在sysmessages 系统表中的信息ID 号.param_value 是在信息中使用的参数.最多可使用20 个参数.
FORMATMESSAGE() 函数查找使用当前
语言平台语言的信息,如果没有本地
语言的信息,则使用U.S. English 版本
语言的信息.
例4-84: 假定有一个编号为10001 的信息存储在sysmessages 表中,此信息的内容为"The Length of rows %column_name in %table_name is %column_num.".FORMATMESSAGE() 函数用值myColumn、 myTable 和20 分别替代上述参
数值,将结果存储在变量@test1 中.程序如下:
declare @test1 varchar (100)
select @test1 = formatmessage (10001, 'myColumn', 'myTable', 20)
·GETANSINULL()
GETANSINULL() 函数语法如下:
GETANSINULL() (['database_name'])
GETANSINULL() 函数返回当前数据库默认的NULL 值.其返回值类型为INT.GETANSINULL() 函数对ANSI 空值NULL 返回1; 如果没有
定义ANSI 空值,则返回0.
例4-85:
select getansinull ('pangu')
运行结果如下:
------
1
·HOST_ID()
HOST_ID() 函数语法如下:HOST_ID()
HOST_ID() 函数返回
服务器端
计算机的名称.其返回值类型为NCHAR.
例4-86:
declare @hostID char (8)
select @hostID = host_id()
pr
int @hostID
运行结果如下:
-606771
·HOST_NAME()
HOST_NAME() 函数语法如下:
HOST_NAME()
HOST_NAME() 函数返回服务器端计算机的名称.其返回值类型为CHAR (8).
例4-87:
declare @hostNAME nchar (20)
select @hostNAME = host_name()
print @hostNAME
运行结果如下:
XUJIN
·IDENTITY()
IDENTITY() 函数语法如下:
IDENTITY (<data_type>[, seed, increment]) [AS column_name])
IDENTITY() 函数只在SELECT...INTO 语句中使用,用于插入一个identity column列到新表中.其返回值类型与data_type 的类型相同.
其中:
data_type 指定数据类型.data type 是INTEGER 或DECIMAL 类的数据类型.Seed指定identity column 的初值,即第一个值.Increment 指定增加一个记录时,记录的identity column 值应在前记录的基础上增加的值.seed 和increment 的缺省值为1.column_name 是所插入的identity column 的列名.虽然AS column_name 为可选项,但由于函数在表中插入了一个新列,所以必须指定列名.如果不使用AS column_name 选项,可以使用以下两种方式来指定列名:
(1) select identity (int, 1, 1) as column_name
into newtable
from oldtable
(2) select column_name = identity (int, 1, 1)
into newtable
from oldtable
有关identity column 的信息,请参见"管理数据库表"中的"列属性"章节.