學習筆記(4)

來源:互聯網
上載者:User

   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的一個函數, 範圍太小了, 再加上是筆試, 好多人沒有真正的去調試過, 感覺現在能用紙與筆用做程式的人少了.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.