4
我有以下SQL Server查詢:SQL Server查詢奇怪的輸出
SELECT ISNULL(MIN(P), 999) AS FLD
FROM (SELECT '0' AS P) AS T
WHERE (1 > 4)
怎麼來此查詢的輸出爲 '*'?
請解釋
感謝
我有以下SQL Server查詢:SQL Server查詢奇怪的輸出
SELECT ISNULL(MIN(P), 999) AS FLD
FROM (SELECT '0' AS P) AS T
WHERE (1 > 4)
怎麼來此查詢的輸出爲 '*'?
請解釋
感謝
ISNULL
使用的第一個參數的數據類型。
這是varchar(1)
因爲這是字面'0'
999
的數據類型將被截斷,SQL服務器顯示爲 '*'
什麼1> 4? SELECT ISNULL(MIN('0'),999)WHERE 1> 4給出'*',但是SELECT ISNULL('0',999)WHERE 1> 4給出空結果! – 2013-04-04 12:51:12
@ Scorpi0沒有「GROUP BY」或「HAVING」的聚合總是返回一行。這是一個標量聚合(與矢量聚合相對)。空結果集上的標量聚合「MIN」將返回NULL值 – 2013-04-04 12:52:32
我仍然感到困惑。 SELECT ISNULL(MIN('0'),999)輸出'0'。沒有WHERE子句的事實改變了MIN運算符的性質? – 2013-04-04 12:55:35