2012-06-21 48 views
6

我在計算列設置爲not null時遇到問題。無法將計算列設置爲空無

我想實現的是C001,C002...等,同時設置爲not null

我在論壇上看到,這可以通過使用NULL值的默認值0來實現。
例如,ISNULL(Price + Taxes, 0)

我試圖運用此公式:

('C'+right('000'+CONVERT([varchar](3),[ID],(0)),(3))) 

但它似乎並沒有工作。誰能告訴我我錯過了什麼?

ALTER CreditCard accountNo AS ISNULL('C'+right('000'+CONVERT([varchar](3),[idCreditCard],(0)),(3)),0) 
+0

您使用'isnull'的alter語句會創建一個不允許空值的列。至少在我的測試中。但是,您缺少表名和列名之間的「添加」。 –

+0

是的。我想創建的是一個不允許爲null的列。我試圖在表名和列名之間添加一個添加,但它不起作用。 – Keenlearner

+0

但是......呃..那就是我說的。它*會創建一個不允許空值的列。你怎麼了?什麼沒有奏效? –

回答

6

我終於找到了我的問題的解決方案!

正確的查詢應該是:

ALTER TABLE CreditCard ADD accountNo AS ISNULL('C'+right('000'+CONVERT([varchar](3),[idCreditCard],(0)),(3)),0) 

感謝您的幫助傢伙!

3

如果這涉及到SQL Server,您可能會對MSDN感興趣。

'只有在指定了PERSISTED的情況下,纔可以爲計算列指定NOT NULL。' http://msdn.microsoft.com/en-us/library/ms190273.aspx

...但試圖反向工程從回答這個問題後,我認爲這是keenlearner只是想確保有從來沒有在列空值,而無需約束。