panwei 文檔管理

從正面看,是偉大的神(God),從反面看,是卑鄙小人(dog);其實,人們所犯的罪惡(evil),反過來,正是為了活著(live)。

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

1.CAST CONVERT 函数的区别?
语法上来说

使用 CAST:

CAST ( expression AS data_type )

使用 CONVERT:

CONVERT (data_type[(length)], expression [, style])

就使用方法来说

如果SQL Server程序员想将表达式从一种换为另一种,他可以从SQL Server 7和2000中自带的两种功能中做出选择。在存储过程或其他情况下,我们常常需要将数据从datetime型转化成varchar型;CONVERT和CAST就可以用于这种情况。

  由于SQL Server提供两种功能,因此应该选择哪种功能或应该在哪种情况下使用该功能就很容易让人困惑了。CONVERT是专对SQL Server使用的,使日期与时间值,小数之间转换具有更宽的灵活性。

  CAST是两种功能中更具ANSI标准的功能,即虽然更具便携性(比如,使用CAST的函数能更容易的被其它数据库软件使用),但功能相对弱一些。不过,当小数转化为数值,并保留原始表达式中的小数数值时,仍然需要使用CAST。因此,我建议首先使用CAST,如果遇到必须使用CONVERT的情况时再使用CONVERT。

  CAST和CONVERT还能联合使用,达到特殊的效果。比如,在current date下生成char变量一般使用以下方法:

  SELECT CONVERT(CHAR(10), CURRENT_TIMESTAMP, 102)

  (102表明使用了ANSI日期模式,即yy.mm.dd型)

  然而,如果你希望将这个变量明确生成为datetime或smalldatetime变量,以此在特定的数据库栏中兼容,那么你可以使用以下语句:

  SELECT CAST(CONVERT(CHAR(10),CURRENT_TIMESTAMP,102) AS DATETIME

  返回值将是 yy.mm.dd 00:00:00(如12:00AM作为时间戳;CURRENT_TIMESTAMP的时间信息将被丢弃。)
  

2.查询出orders表中的1998年的所有订单数

Select * from orders where year=’1998’

 

3.查询出orders表中1998Freight最大()的一笔订单

 Select MAX(freight) from orders where year=’1998’

 4.查出orders表中1998年的总运费

Select count(distinct freight) from orders where year = ‘1998’ 


学得很浅的SQL,呵呵,要多看才行!

posted on 2006-04-18 03:34  panwei  阅读(151)  评论(0)    收藏  举报