2017-02-28 46 views
1

我有很多,所有具有相同的命名邏輯表: tbl_xxxxx_Tijden其中xxxxx是一個數字散裝ALTER TABLE SQL服務器

我需要一個額外的字段添加到這些表,一個INT類型字段。 所以,我想這將是這個樣子:

ALTER TABLE tbl_xxxxx_Tijden ADD newfield INT 

我的問題是:如何丟棄xxxxx的一部分,並使用

ALTER tablename like 'tbl_%_Tijden' ADD newfield INT 

感謝, 詹姆斯

+0

爲什麼你「很多表都具有相同的命名邏輯:tbl_xxxxx_Tijden其中xxxxx是一個數字「?看起來像一個非常奇怪的數據庫設計。 – jarlh

+0

您的選擇是dynamyc sql或udocumented sp_MSforeachtable http://weblogs.sqlteam.com/joew/archive/2007/10/23/60383.aspx – Serg

+0

jarlh,回答與一個無關新問題的問題不會幫助任何人。原因是經過深思熟慮的。 – JamesBB

回答

1

唯一的辦法我知道如何做到這一點是使用動態sql:

DECLARE @SQL nvarchar(max) = '' 

SELECT @SQL = @SQL + 'ALTER TABLE '+ TABLE_NAME +' ADD newfield INT; ' 
FROM Information_schema.Tables 
WHERE TABLE_NAME LIKE 'tbl_%_Tijden' 

EXEC(SQL) 
+0

只需在你的答案中找出一些小錯誤,但速度很快,否則就是正確的!謝謝! – JamesBB

+0

很高興幫助:-)。代碼直接寫在這裏,所以我不驚訝你發現錯誤。我編輯了我的答案來糾正它們,以便這個答案可能對未來的讀者有用。 –