DB and SQL

sql server附加数据库提示缺少xp_dirtree的解决方法

2008-02-22 星期五 14:50 :: DB and SQL

其实很简单,少了一个名为xp_dirtree的存储过程而已,打开“企业管理器”,在“工具”菜单中选择“SQL 查询分析器”,在顶部的数据库下拉选择框中选择“master”,在运行框加输入如下命令:
EXEC sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
EXEC sp_addextendedproc xp_dirtree ,@dllname ='xpstar.dll'

运行即可。

如果提示说对象已存在,则先删除xp_cmdshell与xp_dirtree,运行如下命令:
EXEC sp_dropextendedproc 'xp_cmdshell'
EXEC sp_dropextendedproc 'xp_dirtree'

mysql5插入空值出错的解决方法

2007-11-16 星期五 13:34 :: DB and SQL

在MYSQL5.X中插入一个空值(无POST数据)时,系统会提示出错,在4.0中不会,通过查看手册,跟–sql-mode这个模式有关,解决方法:
打开my.ini
找到sql-mode,将STRICT_TRANS_TABLES去掉,改为MYSQL40
重启mysql即可
具体说明按此

全球十大数据库

2007-06-14 星期四 14:12 :: DB and SQL

我们中的许多人可能都有收藏某种东西的嗜好,其中的一些执著者甚至可以让自己收藏品的数目达到几百上千,这对于个人来说已经是很大的数目。而世界上的许多机构也正在不断收藏着某些东西,它们的“藏品”数量往往达到百万兆级别。这些机构的“收藏”,或者说数据库,是我们每天都在使用的。
下面就让我们看看businessintelligencelowdown.com网站整理的这份全球十大数据库排行榜。

10.美国国会图书馆
尽管我们已经步入数字时代,但这仍然不能阻止美国国会图书馆登上这份排行榜。可惜的是,该图书馆并没有将馆藏内容数字化的计划(工作量之大光想想也很可怕)。
·1.3亿件馆藏品(包括书籍、图片、地图等等)
·2900万本书籍
·每天新增10,000件新藏品
·书架全长530英里(852,952.32米)
·500万数字化文档
·20TB文本资料

9.美国中央情报局(CIA)
屡屡在好莱坞电影中出现的CIA其工作就是收集和发布有关人物、地点、事件的信息,因此该机构进入这份排行榜显然毫无争议。尽管很少有人了解CIA数据库的整体大小,但可以肯定的是该机构通过外勤工作和数字入侵手段已经积聚了数量惊人的信息,无论这些信息属于公共还是私人。
·FOIA(信息自由法案,CIA的公共数据库之一)每月新增100条新内容
·有关超过250个国家和地区的详细情报
·不计其数的机密情报

8.亚马逊(Amazon)
亚马逊是全球最大的在线商店,该网站保存有其庞大活跃用户数的个人信息、收据、期待货物列表等数据,另外还在线提供超过250,000本完整文字书籍;允许用户在网站的每个页面作评论或其他互动。这令亚马逊成为了全球最大的在线交流场所。
·5900万活动用户
·超过42TB的数据

7.YouTube
我们都亲眼目睹了YouTube如何在不到两年之中从无到有成长为全球最大的在线视频库(也是最大的数据库之一,而且还在飞速扩张之中)。该网站目前每天的视频浏览量达到1亿次,每天新增65,000+新视频,这也就意味着在最近五个月之内该网站的数据库可能已经扩大了不止一倍。
·每天1亿次的视频浏览量
·每天新增65,000段新视频
·60%的视频被在线观看
·至少45TB视频数据量

6.ChoicePoint
ChoicePoint的工作是获取美国公民的信息——包括地址、电话号码、驾驶纪录、犯罪记录等等,ChoicePoint 全部囊括其中。ChoicePoint把这些数据中的大多数进行拍卖,价高者得,买家甚至包括美国政府。
ChoicePoint数据库中的电话簿包含10亿页内容,如果打印出来,其长度相当于地球到月球距离的77倍。
·250TB个人信息
·有关2.5亿人的资料

5. Sprint
Sprint是全球最大的电信公司之一,为5300万用户提供移动服务。
·数据库包含2.85万亿栏
·每天3.65亿项通话详细记录
·高峰时期每秒新增70,000项通话记录

4. Google
Google将用户提交的每次搜索都保存到数据库中,一年就能积累33万亿条数据库条目,信息量可达数百TB。另外Google还有收集用户信息的嗜好。Google通过分析用户搜索请求和用户计算机上的Google cookie为每个用户生成一份虚拟profile。
目前,Google提供的服务越来越广,涉及数字媒体(Google Video, YouTube),广告(Google Ads),email(GMail)等,Google的数据库正在以创纪录的速度扩张。就互联网数据库而言,Google是当之无愧的王者。
·每天9100万次搜索
·占据整个互联网搜索量的一半
·为无数用户生成虚拟profile

3. AT&T
和Sprint类似,AT&T是美国历史最悠久的电信公司,也拥有全球最大的数据库之一。其创造的记录包括最大的单个数据库(312TB)和单个数据库列数全球排名第二(1.9万亿列,AT&T的通话记录数据库)
·323TB信息数据量
·1.9亿通话记录

2.美国国家能源研究科学计算中心(NERSC)
全球第二大数据库当属位于加州奥克兰的美国国家能源研究科学计算中心(National Energy Research Scientific Computing Center),劳伦斯柏克莱国家实验室和美国能源部拥有并营运该机构。该机构的数据库保存有原子能研究、先进能源物理实验、早期宇宙模拟等相关数据。想要回到过去最好方式也许是开动NERSC的超级计算机来观察宇宙诞生时的大爆炸。
·2.8PB(1PB=1024TB)
·2000名计算机科学家负责运营该中心

1.世界气候数据中心(WDCC)
如果你拥有一台价值3500万欧元超级计算机你会拿来干嘛?模拟股市?搭建自己的Internet?而现实中的这台计算机用于气候研究,比如说研究大气变暖问题。拥有这台计算机的世界气候数据中心由德国马普气象学院和德国气候计算中心运营,而全球最大的数据库也在此处。
·220TB气象研究 Web数据
·110TB气象模拟数据
·6PB附加数据

mysql4.0数据库导到4.1乱码的完美解决方法

2007-04-27 星期五 09:21 :: DB and SQL

以前转过一篇文章,昨天因工作需要,试用一下,中间出了一些问题,主要还是数据中字符的问题,经过网上N次查询,N次试验,终于搞定,转了2个数据库到4.1,均正常显示了,本机的4.1默认是uft8…
步骤:
1、用phpmyadmin导出4.0的数据为sql文件形式(导出时将添加DROP TABLE选上)
2、用ue或者ep之类的小型IDE打开sql文件,将所有的TYPE=MyISAM替换为ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
3、在命令行下导入sql文件
mysql -u root -p --default-character-set=utf8 数据库名 < XXX.sql

如在导入时出现“MySQL server has gone away”错误,是因为其中一些insert语句的大小超出了mysql目前设置的缓冲区大小,可以在mysql4.1的配置文件(一般情况下是my.ini)中的[mysqld]增加:
set-variable = max_allowed_packet=16M 来解决

清理MSSQL日志

2007-04-22 星期日 21:33 :: DB and SQL

1.清空日志
DUMP TRANSACTION 库名 WITH NO_LOG

2.截断事务日志:
BACKUP LOG 数据库名 WITH NO_LOG

3.收缩数据库文件(如果不压缩,数据库的文件不会减小
企业管理器–右键你要压缩的数据库–所有任务–收缩数据库–收缩文件
–选择日志文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了
–选择数据文件–在收缩方式里选择收缩至XXM,这里会给出一个允许收缩到的最小M数,直接输入这个数,确定就可以了

也可以用SQL语句来完成
–收缩数据库
DBCC SHRINKDATABASE(客户资料)

–收缩指定数据文件,1是文件号,可以通过这个语句查询到:select * from sysfiles
DBCC SHRINKFILE(1)

4.为了最大化的缩小日志文件
a.分离数据库:
企业管理器–服务器–数据库–右键–分离数据库

b.在我的电脑中删除LOG文件

c.附加数据库:
企业管理器–服务器–数据库–右键–附加数据库

此法将生成新的LOG,大小只有500多K

或用代码:
下面的示例分离 pubs,然后将 pubs 中的一个文件附加到当前服务器。

a.分离
EXEC sp_detach_db @dbname = ‘pubs’

b.删除日志文件

c.再附加
EXEC sp_attach_single_file_db @dbname = ‘pubs’,
@physname = ‘c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf’

5.为了以后能自动收缩,做如下设置:
企业管理器–服务器–右键数据库–属性–选项–选择”自动收缩”

–SQL语句设置方式:
EXEC sp_dboption ‘数据库名’, ‘autoshrink’, ‘TRUE’

6.如果想以后不让它日志增长得太大
企业管理器–服务器–右键数据库–属性–事务日志
–将文件增长限制为xM(x是你允许的最大数据文件大小)

–SQL语句的设置方式:
alter database 数据库名 modify file(name=逻辑文件名,maxsize=20)

mysql4.0 4.1 5.0 三个版本的特性对比

2007-03-20 星期二 17:13 :: DB and SQL

  MySQL 4.0
  MySQL 4.0是在2003年3月发布的,该版本使新的基于MySQL的应用程序获得了更广泛的应用。但是在4.0版中,MySQL不支持存储过程、触发程序、服务器端指针或视图。MySQL 4.0是从3.23发展而来,较之3.23版本有了很大的提高,主要适用于Web站点,这时候的MySQL还不是一个企业级数据库。
  以下是MySQL 4.0的主要新特性:
  FULLTEXT索引:最值得用户期待的可能就是FULLTEXT索引。
  FULLTEXT在文本字段创建索引,为对该索引执行布尔搜索提供了一个强大而灵活的机制。依照一般的开发经验,开发人员通常必须创建索引并访问文本数据,而FULLTEXT索引比想象中的还要好得多。
  许多解决方案仅限于全字索引,FULLTEXT索引没有这种限制,允许开发人员添加或拆分词组。
  ANSI SQL UNION:支持ANSI SQL UNION语句,该语句将询问结果汇集到一个结果集。
  多表操作:可以执行多表UPDATE和DELETE。
  新语句:增加了其他DBMS用户所熟悉的一些非标准的新语句(如IDENTITY和TRUNCATE TABLE),以及FOUND_ROWS()等新功能,这些功能可以返回无需LIMIT子句就能返回的纪录的编号。
  InnoDB存储引擎:InnoDB存储引擎在当时作为服务器的标准特性,在4.0版本中成为一个附加选项。InnoDb是允许ACID兼容事务的表类型,而非默认的MyISAM表类型,它可以加快一般性使用的速度,但对于关键操作不是十分有用。
  InnoDB表使用行级别锁定特性,这意味着对一个记录的更新只锁定该记录,而不是整个表。当选择访问大量的数据库时(对于大多数Web站点而言),锁定整个表相当快,但是当插入和更新的数量接近于选项的数量时,则速度较慢。长期以来,对MySQL的批评一直集中在MyISAM表的安全性和一致性问题,兼容ACID的InnoDB表在解决这些问题上走过了很长一段路。
  查询缓存:MySQL 4.0在某些情况下可以更快捷。这主要通过查询缓存得以实现,它将重复的查询结果存储起来,使速度得以提高,尽管许多成熟的应用程序在某个代码级别上执行自己的查询缓存功能。某些语句在速度上也有所提高。
  Embededded Server:MySQL 4.0附带了一个Embededded Server库,允许应用程序以MySQL作为底层数据库。
  latin1_de :MySQL 4.0支持一个额外字符集latin1_de,它可确保正确存储德语单词。
  MyISAM:MySQL 4.0中的MyISAM表目前在表级别上支持符号链接,所以Windows用户可以在表级别上创建符号链接(这对于Unix用户始终有效)。
  安全模型:MySQL 4.0的安全模型得到了增强,允许管理员更加细致地授权许可。新的权限允许用户创建临时表、锁定表、执行某些复制任务、查看所有现有的数据库,甚至在达到最大连接限度时还能进行连接——对于DBA执行紧急任务非常有用,甚至允许运行存储过程(在MySQL 5中实现了此功能)。DBA依靠增强的安全模式也可以限制用户每小时的连接、更新或查询次数。
  MySQL 4设计运行在Novell Netware 6.0之上。另外,MySQL服务器变量中有不少可以在不重新启动服务器的情况下进行更改,由于重新启动会恢复旧的设置,因此这个特性非常有用。

  MySQL 4.1
  MySQL 4.1推出之后,对于某些用户而言,4.1比MySQL 4.0具有更激动人心的升级可能:
  MySQL 4.1支持子查询。
 
  不使用子查询时,许多查询可以更有效地编写,但是会有例外。子查询是标准ANSI SQL特性。
  支持Unicode (UTF-8),允许更广泛地进行国际化。
  每个列、表或数据库都可以设置不同的字符集,如果以多种语言存储数据,这就很有必要了。
  支持地理数据(OpenGIS)。
  增强的警告发送。如果一个不够,MySQL 4.1可以将多个警告发送到客户端,这样就对于整体数据处理十分有用。
  提高了一些速度。但这些速度提高可能被MySQL 4.1所承担的所有额外部分抵消。
  尽管MySQL手册是发布的最好手册之一,MySQL 4.1还是附带了仅适用于该版本的HELP命令。
  支持派生表,例如:
SELECT table1.field1 FROM table, (SELECT * FROM table2) table3 WHERE table1.field1=table3.field1
  支持多行查询,允许运行多个查询,然后读取最终结果。
  各种维护语句将存入二进制日志中,在复制时您可以简化维护任务。
  CREATE…LIKE允许开发人员按现有表的精确结构轻松地创建新表。
  另外,MySQL 4.1的三个显著功能包括:稳定的OpenSSL支持、更多的测试准备语句、更多的测试一个表的多个字符集。
  MySQL 4.1或许是第一个实际“长大成人”的MySQL版本。由于4.1版本中一些新增加的特性和功能(例如地理数据、子选择语句、派生表),Oracle第一次开始真正关注MySQL。

  MySQL 5.0
  支持存储过程。存储过程是一个开发人员在其他数据库环境最常用的ANSI SQL标准,对于MySQL来说,这已经姗姗来迟了。MySQL 5.0所支持的存储过程的语法类似于Oracle PL/SQL和T-SQL。
  触发程序(发生某个事件时所称的存储过程)
  支持指针
  真正支持VARCHAR数据类型,解决了一个长期存在的MySQL VARCHAR bug。
在MyISAM表中对RTREE索引的支持,将使访问地理数据变得很容易。

转自:PHPChina

Mysql 5.1中文手册

2006-11-22 星期三 09:20 :: DB and SQL

从www.greatlinux.com上看到的连接,打开果真是中文的,还是最新的5.1版,真晕啊,我还经常在查5.0英文版的CHM手册。。。还是某位大侠说的对,就算E文再差,任何软件的官方网站还是要去的,总有收获,明白了。
Mysql 5.1中文手册:可以下载
http://dev.mysql.com/doc/refman/5.1/zh/index.html
 

mysql4.0导到4.1出现乱码的解决方法

2006-09-29 星期五 17:57 :: DB and SQL

1. 导出Mysql4.0的数据库(导出时将添加DROP TABLE选上);
2. 用UltraEdit打开导出的sql文件,将所有的ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci 替换成ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ,保存;
3. 进入phpMyAdmin管理,将改好的文件导入到服务器上(导入时将Character set of the file选为GBK)。
4. 完成。

在MSSQL中用查询分析器显示<Long Text>的内容

2006-04-28 星期五 13:46 :: DB and SQL

把显示效果设为“文本”(快捷键Ctrl+T),定义2个变量,用于READTEXT函数中的“有效文本指针”和“读取数据的字节数”的个参数,SQL代码:
DECLARE @ptrval varbinary(16), @lenval int
SELECT @ptrval = TEXTPTR(内容字段),@lenval = DATALENGTH(内容字段) FROM 表格名 where id=xxx
READTEXT 表格名.内容字段 @ptrval 0 @lenval

其中,@ptrval变量是有效文本指针,@lenval变量是读取数据的字节数

Transact SQL 常用语句以及函数[个人推荐](转)

2006-03-17 星期五 08:53 :: DB and SQL

–数据操作 

   SELECT –从数据库表中检索数据行和列 
      INSERT –向数据库表添加新数据行 
      DELETE –从数据库表中删除数据行 
      UPDATE –更新数据库表中的数据 

  –数据定义 

   CREATE TABLE –创建一个数据库表 
      DROP TABLE –从数据库中删除表 
      ALTER TABLE –修改数据库表结构 
      CREATE VIEW –创建一个视图 
      DROP VIEW –从数据库中删除视图 
      CREATE INDEX –为数据库表创建一个索引 
      DROP INDEX –从数据库中删除索引 
      CREATE PROCEDURE –创建一个存储过程 
      DROP PROCEDURE –从数据库中删除存储过程 
      CREATE TRIGGER –创建一个触发器 
      DROP TRIGGER –从数据库中删除触发器 
      CREATE SCHEMA –向数据库添加一个新模式 
      DROP SCHEMA –从数据库中删除一个模式 
      CREATE DOMAIN –创建一个数据值域 
      ALTER DOMAIN –改变域定义 
      DROP DOMAIN –从数据库中删除一个域 

  –数据控制 

   GRANT –授予用户访问权限 
      DENY –拒绝用户访问 
      REVOKE –解除用户访问权限 

  –事务控制 

   COMMIT –结束当前事务 
      ROLLBACK –中止当前事务 
      SET TRANSACTION –定义当前事务数据访问特征 

  –程序化SQL 

   DECLARE –为查询设定游标 
      EXPLAN –为查询描述数据访问计划 
      OPEN –检索查询结果打开一个游标 
      FETCH –检索一行查询结果 
      CLOSE –关闭游标 
      PREPARE –为动态执行准备SQL 语句 
      EXECUTE –动态地执行SQL 语句 
      DESCRIBE –描述准备好的查询   

  —局部变量 

   declare @id char(10) 
      –set @id = ’10010001′ 
      select @id = ’10010001′   

  —全局变量 

  —必须以@@开头   

  –IF ELSE 

  declare @x int @y int @z int 
      select @x = 1 @y = 2 @z=3 
      if @x > @y 
       print ’x > y’ –打印字符串’x > y’ 
      else if @y > @z 
       print ’y > z’ 
      else print ’z > y’ 
      –CASE 
      use pangu 
      update employee 
      set e_wage = 
       case 
       when job_level = ’1’ then e_wage*1.08 
       when job_level = ’2’ then e_wage*1.07 
       when job_level = ’3’ then e_wage*1.06 
       else e_wage*1.05 
       end 
      –WHILE CONTINUE BREAK 
      declare @x int @y int @c int 
      select @x = 1 @y=1 
      while @x < 3 
       begin 
       print @x –打印变量x 的值 
       while @y < 3 
       begin 
       select @c = 100*@x + @y 
       print @c –打印变量c 的值 
       select @y = @y + 1 
       end 
       select @x = @x + 1 
       select @y = 1 
       end 
      –WAITFOR 

  –例 等待1 小时2 分零3 秒后才执行SELECT 语句 

  waitfor delay ’01:02:03’ 
      select * from employee 

    –例 等到晚上11 点零8 分后才执行SELECT 语句 

    waitfor time ’23:08:00’ 


SELECT   

   select *(列名) from table_name(表名) where column_name operator value ex宿主) 
     select * from stock_information where stockid = str(nid) 
     stockname = ’str_name’ 
     stockname like ’% find this %’ 
     stockname like ’[a-zA-Z]%’ ——— ([]指定值的范围) 
     stockname like ’[^F-M]%’ ——— (^排除指定范围) 
     ——— 只能在使用like关键字的where子句中使用通配符) 
     or stockpath = ’stock_path’ 
     or stocknumber < 1000 
     and stockindex = 24 
     not stocksex = ’man’ 
     stocknumber between 20 and 100 
     stocknumber in(10,20,30) 
     order by stockid desc(asc) ——— 排序,desc-降序,asc-升序 
     order by 1,2 ——— by列号 
     stockname = (select stockname from stock_information where stockid = 4) 
     ——— 子查询 
     ——— 除非能确保内层select只返回一个行的值 
     ——— 否则应在外层where子句中用一个in限定符 
     select distinct column_name form table_name 
   ——— distinct指定检索独有的列值,不重复 
     select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name 
     select stockname , "stocknumber" = count(*) from table_name group by stockname 
     ——— group by 将表按行分组,指定列中有相同的值 
     having count(*) = 2 ——— having选定指定的组 

   select * 
     from table1, table2 
where table1.id *= table2.id ——– 左外部连接,table1中有的而table2中没有得以null表示 
     table1.id =* table2.id ——– 右外部连接 
     select stockname from table1 
     union [all] ——– union合并查询结果集,all-保留重复行 
     select stockname from table2  

   insert  

   insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx" 
   value (select Stockname , Stocknumber from Stock_table2) 
   ——-value为select语句   

   update   

   update table_name set Stockname = "xxx" [where Stockid = 3] 
   Stockname = default 
   Stockname = null 
   Stocknumber = Stockname + 4   

   delete   

   delete from table_name where Stockid = 3 
   truncate table_name ——— 删除表中所有行,仍保持表的完整性 
   drop table table_name ——— 完全删除表  

   alter table ——– 修改数据库表结构   

   alter table database.owner.table_name add column_name char(2) null .. 
   sp_help table_name ——– 显示表已有特征 
   create table table_name (name char(20), age smallint, lname varchar(30)) 
   insert into table_name select ——– 实现删除列的方法(创建新表) 
   alter table table_name drop constraint Stockname_default 
   ——— 删除Stockname的default约束 




常用函数(function)   

    转换函数

    convert(数据类型,值,格式)

  统计函数 

  AVG –求平均值 
  COUNT –统计数目 
  MAX –求最大值 
  MIN –求最小值 
  SUM –求和  

  AVG 

  use pangu 
  select avg(e_wage) as dept_avgWage 
  from employee 
  group by dept_id   

  MAX 

  –求工资最高的员工姓名 
  use pangu 
  select e_name 
  from employee 
  where e_wage = 
   (select max(e_wage) 
   from employee)   

  STDEV() 

  –STDEV()函数返回表达式中所有数据的标准差 
  –STDEVP() 
  –STDEVP()函数返回总体标准差   

  VAR() 

  –VAR()函数返回表达式中所有值的统计变异数   

  VARP() 

  –VARP()函数返回总体变异数   

  算术函数   

  三角函数 

  SIN(float_expression) –返回以弧度表示的角的正弦 
  COS(float_expression) –返回以弧度表示的角的余弦 
  TAN(float_expression) –返回以弧度表示的角的正切 
  COT(float_expression) –返回以弧度表示的角的余切 

  反三角函数 

  ASIN(float_expression) –返回正弦是FLOAT 值的以弧度表示的角 
  ACOS(float_expression) –返回余弦是FLOAT 值的以弧度表示的角 
  ATAN(float_expression) –返回正切是FLOAT 值的以弧度表示的角 
  ATAN2(float_expression1,float_expression2) 
   ——返回正切是float_expression1 /float_expres-sion2的以弧度表示的角 
  DEGREES(numeric_expression) 
   ——把弧度转换为角度返回与表达式相同的数据类型可为 
   ——INTEGER/MONEY/REAL/FLOAT 类型 
  RADIANS(numeric_expression) 
——把角度转换为弧度返回与表达式相同的数据类型可为 

   ——INTEGER/MONEY/REAL/FLOAT 类型 
  EXP(float_expression) –返回表达式的指数值 
  LOG(float_expression) –返回表达式的自然对数值 
  LOG10(float_expression)–返回表达式的以10 为底的对数值 
  SQRT(float_expression) –返回表达式的平方根 

  取近似值函数 

  CEILING(numeric_expression) 
——-返回>=表达式的最小整数返回的数据类型与表达式相同可为 
   ——-INTEGER/MONEY/REAL/FLOAT 类型 
  FLOOR(numeric_expression) 
——-返回<=表达式的最小整数返回的数据类型与表达式相同可为 
   ——-INTEGER/MONEY/REAL/FLOAT 类型 
  ROUND(numeric_expression) 
——-返回以integer_expression 为精度的四舍五入值返回的数据 
   ——-类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 
  ABS(numeric_expression) 
——-返回表达式的绝对值返回的数据类型与表达式相同可为 
   ——-INTEGER/MONEY/REAL/FLOAT 类型 
  SIGN(numeric_expression) 
——-测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型 
   ——-与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型 
  PI() ——-返回值为π 即3.1415926535897936 
  RAND([integer_expression]) 
——-用任选的[integer_expression]做种子值得出0-1 间的随机浮点数


字符串函数 

  ASCII() ——函数返回字符表达式最左端字符的ASCII 码值 
  CHAR() ——函数用于将ASCII 码转换为字符 
   ——如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值 
  LOWER() ——函数把字符串全部转换为小写 
  UPPER() ——函数把字符串全部转换为大写 
  STR() ——函数把数值型数据转换为字符型数据 
  LTRIM() ——函数把字符串头部的空格去掉 
  RTRIM() ——函数把字符串尾部的空格去掉 
  LEFT(),RIGHT(),SUBSTRING() –函数返回部分字符串 
  CHARINDEX(),PATINDEX() –函数返回字符串中某个指定的子串出现的开始位置 
  SOUNDEX() ——函数返回一个四位字符码 
   ——SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值 
  DIFFERENCE() ——函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异 
   ——0 两个SOUNDEX 函数返回值的第一个字符不同 
   ——1 两个SOUNDEX 函数返回值的第一个字符相同 
   ——2 两个SOUNDEX 函数返回值的第一二个字符相同 
   ——3 两个SOUNDEX 函数返回值的第一二三个字符相同 
   ——4 两个SOUNDEX 函数返回值完全相同同 
  QUOTENAME() ——函数返回被特定字符括起来的字符串 

  /**//*select quotename(‘abc’, ’{‘) quotename(‘abc’) 
  运行结果如下 

  { 
  {abc} [abc]*/ 
  REPLICATE() ——函数返回一个重复character_expression 指定次数的字符串 
  /**//*select replicate(‘abc’, 3) replicate( ’abc’, -2) 

  运行结果如下 

  abcabcabc NULL*/ 
  REVERSE() ——函数将指定的字符串的字符排列顺序颠倒 
  REPLACE() ——函数返回被替换了指定子串的字符串 
  /**//*select replace(‘abc123g’, ’123′, ’def’) 

  运行结果如下 
   
  abcdefg*/   

  SPACE() ——函数返回一个有指定长度的空白字符串 
  STUFF() ——函数用另一子串替换字符串指定位置长度的子串   

  数据类型转换函数 

  CAST() 函数语法如下 
  CAST() ( AS [ length ]) 
  CONVERT() 函数语法如下 
  CONVERT() ([ length ], [, style]) 
  select cast(100+99 as char) convert(varchar(12), getdate()) 

  运行结果如下 
  199 Jan 15 2000  

  日期函数 

  DAY() ——函数返回date_expression 中的日期值 
  MONTH() ——函数返回date_expression 中的月份值 
  YEAR() ——函数返回date_expression 中的年份值 
  DATEADD( , ,) 
   —–函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期 
  DATEDIFF( , ,) 
   —–函数返回两个指定日期在datepart 方面的不同之处 

  DATENAME( ,  ——函数以字符串的形式返回日期的指定部分 
  DATEPART( ,  ——函数以整数值的形式返回日期的指定部分 
  GETDATE() ——函数以DATETIME 的缺省格式返回系统当前的日期和时间   

  系统函数 

  APP_NAME() ——函数返回当前执行的应用程序的名称 
  COALESCE() —–函数返回众多表达式中第一个非NULL 表达式的值 
  COL_LENGTH(<’table_name’>, <’column_name’> —-函数返回表中指定字段的长度值 
  COL_NAME(,  —-函数返回表中指定字段的名称即列名 
  DATALENGTH() —–函数返回数据表达式的数据的实际长度 
  DB_ID(['database_name']) ——函数返回数据库的编号 
  DB_NAME(database_id) ——函数返回数据库的名称 
  HOST_ID() —–函数返回服务器端计算机的名称 
  HOST_NAME() —–函数返回服务器端计算机的名称 
  IDENTITY([, seed increment]) [AS column_name]) 
   –IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中 
  /**//*select identity(int, 1, 1) as column_name 
   into newtable 
   from oldtable*/ 

  ISDATE() —-函数判断所给定的表达式是否为合理日期 
  ISNULL(,  –函数将表达式中的NULL 值用指定值替换 
  ISNUMERIC() —-函数判断所给定的表达式是否为合理的数值 
  NEWID() —-函数返回一个UNIQUEIDENTIFIER 类型的数值 
  NULLIF(,  
   —-NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回xpression1 的值

转自:http://www.lemongtree.com/286.html.aspx