2015-07-06 83 views
-2

爲什麼max,min,count集合函數在對SQL Server 2005中的數據類型爲varchar(max)的列使用時沒有提供正確的輸出?關於集合函數

請告訴我的朋友

+1

你能告訴我們一些代碼來說明你的觀點嗎? –

+0

但他們確實提供了正確的輸出(至少每次使用它們)。你爲什麼認爲結果不正確? –

+0

我在這個領域的最大值是100,最小值是16.355,行數是46.當我執行min時,它給出100,最大值爲63.457,而數值只給出45 ..如果字段有一個或多個相同的值可能會出現這些問題..? –

回答

0

如果你期待的最小或最大的是基於什麼是存儲在VARCHAR(MAX)列中的十進制值,你將不得不施放此列第一個十進制數。例如:

SELECT 
    MIN(CAST(val AS DECIMAL(28,4)) AS min_val 
FROM 
    your_table 

只有當此VARCHAR列僅包含數值時,纔會有效。在這種情況下,最好將此列的類型首先更改爲適當的DECIMAL類型。那麼你將不必首先參加CAST。

在VARCHAR列上選擇MIN或MAX將選擇最小/最大值lexicographical,因此將字符串的長度考慮在內。

+0

謝謝..它工作正常 –

+0

@DhandsDhands您可以通過檢查複選標記來感謝我。 –