• <<SQL Server 2005 高级程序设计>> 学习笔记(4)


       1、定义变量与赋值
       Declare @UserID  --定义变量
       Select @UserID=1 --赋值  
       Set @UserID=1
       Select @UserID=UserID from tb_User where UserName='A'  --这样也是可以赋值的, 记得刚学SQL2000不知道这样是可以
      
       如下: 则通过变量,把值返回, 不需要另外创建表
       Declare @UserID int, @UserName varchar(20)
       Set @UserID=1
       Set @UserName='AAA'
       Select @UserID as UserID, @UserName as UserName
      
       2、几个系统函数的使用
       @@error一般使用过事务的人就熟使用这个系统函数。 在@error<>0时, 事务回滚。
       @@RowCount影响的行数
       @@Identity返回插入行主键的值
      
       3、cast convert的用法
       Convert: 时间的转化时用得最多, 例如:Convert(varchar(10), getdate(),111)
       Cast: 例如: cast(* as *), 当在改变表结构时, cast when then else end这样的语句会起最大的作用
       例:
       /*
       表UserDetails有字段
       UserID, Code,    Type
        2       C-1     Coo
        2       M-1     Coo
        2       D-1     Doo
        3       C-1     Coo
        3       M-1     Coo
        3       H-1     Doo
       需要把字段变成 UserID, Code不同的值(有多少个就是多少个),值为Type, 如果是没有的则留为空
       UserID  C-1   M-1   D-1   H-1
         2     Coo   Coo   Coo
         3     Coo   Coo         Doo
      
       */

       declare @sql varchar(500)
       --首先需要选UserID
       set @sql='select Userid '
       /*
       下面句尤其重要, 原理如下
       既然要把code的不同值当标题, 首先要从表里把code不同的值选出来 select distinct code from UserDetails 用集合temp来表示
       然后通过cast来把Type的值赋到值里面, 通过UserID来汇总
       case when then else end这样的语法就在这里起好大的作用了
       */

       select @sql= @sql + ', max(case code when ''' + code +''' then Type else '''' end) as ''' + code+''''
       from (select distinct code from UserDetails) as Temp
       set @sql= @sql +' from UserDetails group by Userid'
       exec(@sql)

      

       还有一种cast是搜索型的, 也就是case后不表达式, 在when后面根有条件表达式:
       select UserID, InsertTime, [type] = case when(datediff(day,InsertTime,getdate())>0) then 'Old' else 'New' end  from UserDetails

       小结: 现在多数的笔数都有一条这改变表结构的, 或许他们觉得能做出来才是SQL精通者, 然而我刚好认为这不, 因为好多人做不出来, 也不代表人家不精通, 因为这只是SQL中cast的一个函数, 范围太小了, 再加上是笔试, 好多人没有真正的去调试过, 感觉现在能用纸与笔用做程序的人少了.

  • 相关阅读:
    洛谷P1091 :合唱队形
    NBUT[1026]: 汽车加油问题
    automaticallyAdjustsScrollViewInsets 标签栏不正常显示
    dyld: Symbol not found: _OBJC_CLASS_$_UIBlurEffect
    UIColor -colorWithAlphaComponent
    怎样让外界无法改变自定义view的尺寸大小
    UITableViewCell
    tabBar自定义
    iOS7以后的侧滑返回上一页
    backBarButtonItem无效
  • 原文地址:https://www.cnblogs.com/whtydn/p/1711196.html
Copyright © 2020-2023  润新知