随笔 - 163  文章 - 2  评论 - 370  阅读 - 46万 

   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的一个函数, 范围太小了, 再加上是笔试, 好多人没有真正的去调试过, 感觉现在能用纸与笔用做程序的人少了.

posted on   风浪  阅读(324)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示