失敗,我有這樣一個表(簡體):使用ISNUMERIC狀況
CREATE TABLE #table (Id INT, Field NVARCHAR(MAX))
INSERT INTO #table VALUES (1, 'SomeText')
INSERT INTO #table VALUES (2, '1234')
對於一些原因,我需要查詢該表並獲得Field
總和,如果它是數字,並返回''
如果是不。我想這樣的:
SELECT CASE WHEN ISNUMERIC(Field) = 1 THEN SUM(CONVERT(MONEY, Field)) ELSE '' END
FROM #table
GROUP BY Field
但此查詢導致以下異常:
不能char值轉換爲錢。該char值具有不正確的語法。
我甚至改變了ELSE
情況下,從''
到0
但我仍然得到了同樣的信息。
爲什麼我會得到異常?據我所知,SUM(...)
不應該被執行時ISNUMERIC(Field)
返回0
這無論如何都會失敗,因爲'CASE'表達式可以返回只有一個數據類型。在你的情況下,你正在'MONEY'數據類型(它返回'MONEY')或'''''上使用'SUM',這顯然是一個字符串 – Lamak
@Lamak,這就是爲什麼我把''''改成'0'檢查這是否有幫助。但是,該消息仍然顯示。 –
,因爲你應該在SUM中使用'CASE'表達式來啓動器:'SUM(CASE當ISNUMERIC(Field)= 1 THEN Field END)' – Lamak