SQL SERVER系统函数

在查询语句中,不仅可查询表中列的值而且可以使用内部函数查询 数据库中不同类型的信息。可以在SELECT列表,WHERE子句和任何允许表达式的地方使用内部函数。这些函数都是T-SQL对SQL的扩展。Adaptive Server提供的内部函数可以分成以下几类:
l          系统函数。返回 数据库中的信息;
l         字符串函数。用于处理字符串或字符串表达式;
l         text函数。用于处理text和image类型的数据;
l         数学类型。用于处理三角、几何以及其它数据处理的函数;
l         日期函数。处理datetime和smalldatetime类型的数据;
l         数据类型转换函数(convert)。用于将一种数据类型转换成另一种数据类型,也可将日期格式化成各种形式。
l          安全函数。返回 安全服务和用户自定义角色的信息
一、 系统函数
系统函数从 数据库返回特定的信息,它们中的大多数提供了查询 系统表的简便方式。
系统函数的一般语法:
select function_name ( argument[s] )
系统函数可以用在选择项里、where子句里以及任何允许表达式存在的地方。例如:如果要查询“zyf”的用户标示号,则输入:
select  “用户标示号” =user_id ( “zyf” )
 
 
结果:
用户标示号
——
3
一般来说,函数名表示里将返回什么样的信息。
User_name用ID号作参数而返回用户的名字。如下,如果查询ID号为3的用户名
Select “用户名” = user_name(3)
结果:
用户名
——
zyf
找出当前用户的名字(也就是正在使用的用户名)
select user_name()
结果:
用户名
——
dbo
Adaptive Server按照如下的规则处理用户标示符:
l         当 系统管理员成为他使用的 数据库的所有者时,其登陆用户ID被指定为1;
l         guest用户的登陆用户ID总是-1
l          数据库所有者的用户总是dbo,他的用户ID是1;
l         guest用户的ID是2
 
系统函数表
函数名
 参数
 返回结果
 
Col_name
 (object_id,column_id[,database_id])
 列名
 
Col_length
 (object_name,column_name)
 列的定义长度(使用datalength是查看实际数据的长度)
 
curunreservedpgs
 (dbid,lstart,unreservedpgs)
 磁盘片中的空闲页数。如果 数据库是打开的,则该值来自于 内存;如果 数据库没有打开则该值来自于 系统表sysusages中列unreservedpgs
 
Data_pgs
 (object_id,{doampg | ioampg})
 被表(doampg)或索引(ioampg)使用的页数。该结果不包括内部结果使用的页数
 
Datalength
 (expression)
 返回expression的长度。Expression可以是列名也可以是字符串常量。如果是列名则返回列中实际数据的长度。
 
Db_id
 ([database_name])
  数据库的ID号。 数据库名必须为字符表达式,如果 数据库名为字符常量,则必须用引号将其引起来。如果没有给出 数据库名,则返回当前 数据库的ID号
 
Db_name
 ([database_id])
  数据库名。Database_id必须是数值表达式如果没有给出database_id,则返回当前 数据库名。
 
Host_id
 ()
 客户进程(非Adaptive Server进程)的当前主机名
 
Host_name
 ()
 索引列名。如果object_name 不是表名或视图名,则返回NULL
 
Index_col
 (object_name,index_id,key_#[,user_id])
 当expression1为NULL时,用expression2的值来代替expression1的值。表达式的值必须可隐式地转化,否则必须使用convert函数
 
Isnull
 (expression1,expression2)
 管理日志段的最后机?值。Lastchance:在指定的 数据库中创建一个最后机会值;当指定 数据库的最后机会值被超过时返回1,否则返回0;unsuspend:用以唤醒 数据库中挂起的任务并且当最后机会值被超过时使用该机会值无效;reserve:返回要成功地转储指定大小的一个事务日志时所需的自由日志页的数目。
 
Lct_admin
 ({{“lastchance”|”logfull”|”unsuspend”}
,database_id}|
“reserve”
,log_pages})
 分配给表或索引的页数 Reserved_pgs
 (object_id,{doampg|ioampg})
 表中行数的估计值
 
Rowent
 (doampg)
  数据库对象ID号
 
Object_id
 (“objname”)
  数据库对象名
 
Object_name
 (obj_id)
 从表syslogins中返回服务器用的ID号,如果没有给出参数server_user_name的值则返回当前用户的服务器ID号
 
Suser_id
 ([server_user_name])
 返回服务器用户名,服务器用户的ID号存储在表syslogins中,如果没有给出参数server_user_id的值,则返回当前用户名。
 
Tsequal
 (timestamp,timestamp2)
 在浏览模式下,比较timestamp的值以阻止提交那些被修改过的值。Timestamp是被浏览行的时间标志;timestamp2是存储行的时间标志。该函数允许用户不调用db_library而使用浏览模式。
 
Used_pgs
 (object_id,doampg,ioampg)
 由表和聚簇索引使用的列数
 
User
  
 用户名
 
User_id
 ([user_name])
 用户的ID号。报告当前 数据库中的用户ID号,如果没有给出参数user_name,返回当前用户的ID号。
 
User_name
 ([user_id])
 返回与当前 数据库的用户ID号相对应的用户名。如果没有提供参数user_id的值,则返回当前用户名。
 
Valid_name
 (character_expression)
 如果character_expression是无效的标识符(非法字符或长度超过了30),则返回0;否则返回非0数值
 
Valid_user
 (server_user_id)
 如果指定的ID号在Adaptive Server的至少一个 数据库中有其对应的用户名或别名,则返回1;只有sa_role或sso_role角色的用户才可以使用该函数。
 
 
例子:
1、找出表titles中title列的长度
slelect “标题长度”=col_length(“article”,”title”)
  结果:
  标题长度
  -----
  120
2、找出表article中title列中数据的长度
  select length=datalength(title),title
  from article
  结果:
length    title
24          软透露其internet 策略
20                            A推出两种网络新软件
21                            IBM发布新版SYSTEMVIEW
3、查找所有作家的工资,如果工资为NULL值则替换成$10.00
   select isnull(salary,$10.00)
   from auths
结果:
——
120.00
100.00
110.00
10.00
4、查出 系统表sysusers中的用户ID为1的用户名
select name form sysusers
where name=user_name(1)
结果:
name
——
dbo
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值