程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 如何確定SQL Server欄中的最大值

如何確定SQL Server欄中的最大值

編輯:關於MYSQL數據庫

       如何確定SQL Server欄中的最大值

      CREATE TABLE [dbo].[MinMax](

      [MinMaxID] [int] IDENTITY(1,1) NOT NULL,

      [Value1] [int] NULL,

      [Value2] [int] NULL,

      [Value3] [int] NULL,

      [Value4] [int] NULL,

      CONSTRAINT [PK_MinMax]PRIMARY KEY CLUSTERED

      (

      [MinMaxID] ASC

      )WITH (PAD_INDEX= OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

      ) ON [PRIMARY]

      注意,表定義允許在它的四個列中使用NULL值。在大多數情況下,我會盡量應用非NULL列,但在這種情況下,一個或幾個日期列中很有可能包含NULL值;我當然不希望僅僅為了逃避非NULL問題而輸入錯誤的數據。於是我把所有日期列定義為NULL列。圖1給出了一些你可以插入表中的樣本值。

      對於簡單Min()和Max()函數的作用,SQL有它自己的規定,即比較一個列中的值。既然沒有內置函數來比較任何兩個值並確定最大或最小值,你應該自行編寫這種函數。我決定把它們叫做Min2()和Max2()。見列表A。

      你可以用這個代碼對它們進行測試:

      SELECT dbo.Min2( 23, 34 )

      SELECT dbo.Max2( 23,NULL)

      SELECT dbo.Min2( NULL, 34 )

      SELECT dbo.Max2( 23,NULL)

      要比較原始表中的值,你可以簡單地嵌入函數調用,就像這樣:

      SELECT dbo.Max2( Value1, dbo.Max2( Value2, dbo.Max2( Value3, Value4 ) ) )

      FROM dbo.MinMax

      根據原始表,這個調用的結果如下:

      7

      10

      27

      81

      還是有一個問題:上面的代碼把NULL轉換成0。在Min2()函數中,這意味著如果有自變量為NULL值,則返回結果為0。在多數情況下,我認為這樣做是恰當的,但在一些特殊情況下,你可能希望返回NULL而不是0。

      你可能已經編寫了一個剛好只接受四個參數的函數,但這樣的函數過於特殊,不能在其它情況下使用。花一點時間考慮更普遍的情況,你將會得到更加有用的函數。

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved