当前位置:七道奇文章资讯数据防范MSSQL防范
日期:2011-05-02 15:21:00  来源:本站整理

<b>SQL Server数据库技术(21)</b>[MSSQL防范]

赞助商链接



  本文“<b>SQL Server数据库技术(21)</b>[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

8、系统函数
系统函数用于获得有关计算机系统、用户、数据库和数据库对象的信息.系统函数可以让用户在得到信息后,利用条件语句,按照返回的信息举行差别的操作.与别的函数一样,可以在SELECT 语句的SELECT 和WHERE 子句以及表达式中利用系统函数.

·APP_NAME()
APP_NAME() 函数语法以下:
 APP_NAME()
APP_NAME() 函数返回当前履行的利用程序的名称.其返回值范例为nvarchar (128).

  例4-77: 测试当前利用程序能否为sql server Query Analyzer


·COALESCE()
COALESCE() 函数语法以下:
COALESCE ( [, ...n])
COALESCE() 函数返回众多表达式中第一个非NULL 表达式的值.假如全部的表达式均为NULL, 则COALESCE() 函数返回NULL 值.COALESCE() 函数等效于下面的CASE 语句:

CASE
WHEN (expression1 IS NOT NULL) THEN expression1

WHEN (expressionN IS NOT NULL) THEN expression
ELSE NULL

  例4-78:


·COL_LENGTH()
COL_LENGTH() 函数语法以下:
 COL_LENGTH (<'table_name'>, <'column_name'>)
COL_LENGTH() 函数返回表中指定字段的长度值.其返回值为INT 范例.

  例4-79:


·COL_NAME()
COL_NAME() 函数语法以下:
 COL_NAME (,
COL_NAME() 函数返回表中指定字段的名称,即列名.其返回值为SYSNAME 范例.此中table_id 和column_id 都是INT 范例的数据,函数用table_id 和column_id 参数来生成列名字符串.关于若何得到table_id 和column_id, 请拜见OBJECT_ID() 函数.

  例4-80:



·DATALENGTH()
DATALENGTH() 函数语法以下:
DATALENGTH (
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 (, [, ...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.

[1] [2] [3] [4] 下一页  




  例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()
print @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 ([, 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 的信息,请拜见"管理数据库表"中的"列属性"章节.

·IDENT_INCR()
IDENT_INCR() 函数语法以下:
 IDENT_INCR ('table_or_view')
IDENT_INCR() 函数返回表中标识性字段identity column 的增量.若无此字段,则返回NULL 值.其返回值范例为NUMERIC.

  例4-88:


·IDENT_SEED()
IDENT_SEED() 函数语法以下:
IDENT_SEED (<'table_or_view'>)
IDENT_SEED() 函数返回表中标识性字段identity column 的初值.若无此字段,则返回NULL 值.其返回值范例为NUMERIC.

  例4-89:


·INDEX_COL()
INDEX_COL() 函数语法以下:
INDEX_COL (<'table_name'>, , )
INDEX_COL() 函数返回表内索引辨认码为index_id 的索引的名称,并找出构成该索引的列组合中第key_id 个列名.其返回值范例为NCHAR.

 例4-90:



·ISDATE()
ISDATE() 函数语法以下:
ISDATE ()
ISDATE() 函数判断所给定的表达式能否为公道日期,假如是则返回1, 不是则返回0.

  例4-91:



·ISNULL()
ISNULL() 函数语法以下:
ISNULL (, )
ISNULL() 函数将表达式中的NULL 值用指定值替换.假如check_expresssion 不是NULL, 则返回其本来的值,不然,返回replacement_value 的值.

提醒:reaplacement_value的数据范例应与chech_expresssion一致.

上一页  [1] [2] [3] [4] 下一页  




  例4-92:


·ISNUMERIC()
ISNUMERIC() 函数语法以下:
 ISNUMERIC ()
ISNUMERIC() 函数判断所给定的表达式能否为公道的数值(INTEGER、 FLOATING POINT NUMBER、 MONEY 或DECIMAL 范例),假如是则返回1, 不是则返回0.

提醒:查抄MONEY型数据时,应先用CONVERT()函数将其转换为数值型或字符型.

  例4-93:



·NEWID
NEWID() 函数语法以下:
 NEWID()
NEWID() 函数返回一个UNIQUEIDENTIFIER 范例的数值.此函数利用计算机的网卡的Ethernet 地址加上经过CPU Clock 产生的数字而得到其返回值.由于网卡的Ethernet地址是环球惟一的(在将来近一百年内不会生产出相同Ethernet 地址的网卡),因而函数所产生的数字也是惟一的.

  例4-94:


·NULLIF()
NULLIF() 函数语法以下:
 NULLIF (, )
NULLIF() 函数在expression1 与expression2 相等时返回NULL 值,若不相等时则返回expression1 的值.其返回值范例与expression1 相同.expression1 与expression2 应为同类的数据范例.

  例4-95:


·OBJECT_ID()
OBJECT_ID() 函数语法以下:
 OBJECT_ID (<'object_name'>)
OBJECT_ID() 函数返回数据库对象的编号.其返回值范例为INT.

  例4-96:


提醒:当指定一个暂时表的表名时,其表名的前面必须加上暂时数据库名"tempdb",如:select object_id("tempdb..#mytemptable").

·OBJECT_NAME()
OBJECT_NAME() 函数语法以下:
 OBJECT_NAME ()
OBJECT_NAME() 函数返回数据库对象的名称.其返回值范例为NCHAR.

  例4-97:


·PARSENAME()
PARSENAME() 函数语法以下:
 PARSENAME (<'object_name '>, )
PARSENAME() 函数返回一个数据库对象完好名称中的特定部份(对象名称或数据库拥有者名称或数据库名称或服务器名称).其返回值范例为NCHAR.
 此中object_piece 为INT 范例,其取值以下:
  对象名称Object name;
  数据库拥有者名称Owner name;
  数据库名称Database name;
  服务器名称Server name.
 假如object_name 或object_piece 为NULL, 则返回NULL 值.

  例4-98:


·PERMISSIONS()
PERMISSIONS() 函数语法以下:
 PERMISSIONS ([object_id [, 'column_name']])
PERMISSIONS() 函数用于获得当前用户对某一对象的存取权限或对某一号令的履行权限.其返回值为一个32 位的bitmap 值,此中低16 位表示目前用户对象的存取权限设定值.高16 位表示用户能否可以开放此对象的权限给别的人.
假如不指定object_id, 则函数返回目前用户的号令履行权限的bitmap 值.利用column_name 选项可以得到表的列权限.各权限值见表4-10 至4-12.

 有关PERMISSIONS() 函数利用办法,我们将在今后的章节辨别报告.

·STATS_DATE()
STATS_DATE() 函数语法以下:
 STATS_DATE (, )
STATS_DATE() 函数返回最新的索引统计日期.其返回值范例为DATETIME.

上一页  [1] [2] [3] [4] 下一页  



  例4-99:


·SUSER_SID()
SUSER_ SID() 函数语法以下:
 SUSER_SID (['login_name'])
SUSER_SID() 函数按照用户登录名返回用户的SID (Security Identification Number,安全帐户名)号.其返回值范例为INT. 假如不指定login_name, 则返回当前用户的SID号.

  例4-100:


·SUSER_SNAME()
SUSER_SNAME() 函数语法以下:
 SUSER_SNAME ([server_user_sid])
SUSER_SNAME() 函数按照SID 号返回用户的登录名.假如没有指定server_user_sid,则返回当前用户的登录名.其返回值范例为NCHAR.

  例4-101:


·USER_ID()
USER_ID() 函数语法以下:
 USER_ID (['user_name'])
USER_ID() 函数按照用户数据库的用户名返回用户的数据库ID 号.其返回值范例为INT. 假如没有指定user_name, 则返回当前用户的数据库ID 号.

  例4-102:


·USER_NAME()
USER_NAME() 函数语法以下:
 USER_NAME ([user_id])
USER_NAME() 函数按照用户的数据库ID 号返回用户的数据库用户名.其返回值范例为NCHAR. 假如没有指定user_id, 则返回当前数据库的用户名.

  例4-103:


9、TEXT 和IMAGE 函数
·TEXTPTR()
TEXTPTR() 函数语法以下:
 TEXTPTR ()
TEXTPTR() 函数返回一个指向存储文本的第一个数据库页的指针.其返回值是一个VARBINARY (16) 范例的二进制字符串.假如数据范例为TEXT、 NTEXT 或IMAGE的列没有赋予初值,则TEXTPTR() 函数返回一个NULL 指针.

  例4-104:


·TEXTVALID()
TEXTVALID() 函数语法以下:
 TEXTVALID (<'table.column'>, )
TEXTVALID() 函数用于查抄指定的文本指针能否有效.假若有效,则返回1; 无效,则返回0. 假如列未赋予初值,则返回NULL 值.

  例4-105:



10、NILADIC 函数
NILADIC 函数返回一个用户或时间戳值.这类函数均不带参数.NILADIC 函数常常被定义为CREATE 或ALERT TABLE 语句中DEFAULT 约束的一部份,可拜见"管理数据库表"章节.主要的NILADIC 函数以下:

·CURRENT_TIMESTAMP
CURRENT_TIMESTAMP 函数语法以下:
 CURRENT_TIMESTAMP
CURRENT_TIMESTAMP 函数返回当前的日期和时间,平等于GETDATE() 函数.返回值范例为DATETIME.

  例4-106:


·CURRENT_USER
CURRENT_USER 函数语法以下:
 CURRENT_USER
CURRENT_USER 函数与USER_NAME() 函数功效相同,返回当前用户的数据库用户名.返回值范例为SYSNAME.

  例4-107:


·SESSION_USER
SESSION_USER 函数语法以下:
 SESSION_USER
SESSION_USER 函数平等于USER_NAME() 函数,返回当前用户的数据库用户名.返回值范例为NCHAR.

·SYSTEM_USER
SYSTEM_USER 函数语法以下:
 SYSTEM_USER
SYSTEM_USER 返回当前系统的用户名.假如用户是以Windows NT 认证方法登录SQL Server 的,则会返回Windows NT 的登录名;假如用户是以SQL Server 认证方法登录的,则返回SQL Server 中的用户名.

  例4-108:


·USER
USER 函数语法以下:
 USER
USER 与系统函数USER_NAME() 的功效相同,返回当前用户的数据库用户名.返回值范例为CHAR.

  例4-109:


11、用户自定义函数
从SQL Server 2000 开始,用户可以自定义函数了.在SQL Server 2000 顶用户自定义函数是作为一个数据库对象来管理的,可以利用企业管理器(Enterprise Manager) 或Transact-SQL 号令来成立、改正、删除.其具体办法请拜见第13 章"游标、视图和自定义函数".

本章介绍了Transact-SQL 语言的基本概念,及其利用办法.Transact-SQL 语言需求大量的实践,才能纯熟应用.本章及今后的SQL 语法基本上都是尺度的ANSI SQL 兼容语法,在别的数据库中,如Oracle、 SYBASE、 INFORMIX、 FOXPRO 等,大部份语句都可套用.

上一页  [1] [2] [3] [4] 

  以上是“<b>SQL Server数据库技术(21)</b>[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .