CAST(c.CNumber AS VARCHAR(2)) + '.'
+ CAST(cc.Card AS VARCHAR(2)) + '.'
+ CAST(CASE WHEN ce1.Id IS NOT NULL
THEN ISNULL(cerp.CERP, ' ')
ELSE ISNULL(cpa.Port, ' ')
END AS VARCHAR(2)) AS [IDPool]
假設CNumber是3,Card是50,此查詢的顯示將是3.50.0問題是我需要找到一種方法來覆蓋數據類型優先級和ISNULL和COALESCE中存在的第一個列出的變量限制。我不能讓最後一個數字爲0,我需要它不顯示任何內容。我試過鑄造無濟於事。也許這是不可能做到的?ISNULL(int,'')空字符串返回0,有沒有辦法重寫?
編輯 - 道歉,第一篇文章,我看了別處。
如果ce1.Id不爲空,那麼如果cerp.CERP爲空,我需要傳遞一個空字符串,所以結果應該是,假設3.50。但是因爲ISNULL採用了第一個傳遞參數的數據類型(在這種情況下是int),它將該空字符串轉換爲0,結果爲3.50.0問題是我不能讓它在結尾處爲0
呃,什麼?,你實際需要什麼結果? – Lamak
所以你想'3.5'或'3.50'或'3.50.'?我很困惑。 – BJones
即使有一點清楚的解釋也會在很長的時間裏得到答案。 –