2
我試圖創建一個腳本,它在對一個數據庫運行時需要一列並將其設置爲NOT NULL。SQL Server:當列大小未知時將varchar設置爲非空
該列應該是一個VARCHAR(50),如果我知道它沒有改變,這將是一塊蛋糕,但是,我不能確定沒有人改變了長度,所以我需要確保我不會減小列的大小,例如,如果其他人已將其增加到100列。
我希望我可以做這樣的事情,但它似乎不工作(假設我已經確信沒有NULL值):
DECLARE @myColumnLength INT
SET @myColumnLength = (
SELECT character_maximum_length
FROM information_schema.columns
WHERE table_name = 'mytable'
AND column_name = 'mycolumn'
)
ALTER TABLE mytable
ALTER COLUMN mycolumn VARCHAR(@myColumnLength) NOT NULL
任何想法?我是否以錯誤的方式攻擊了這個問題?看起來合乎邏輯的是,如果不更改列大小,將會有一種方法將列設置爲NOT NULL,但我的Google-fu今天正在失敗。
我想你的解決方案,但它似乎我不得不把INT轉換爲VARCHAR這樣的: mycolumn VARCHAR('+ CONVERT( VARCHAR(4),@ myColumnLength)+') 當我這樣做時,它運行良好。 –