2012-02-23 20 views
0

下面的這個腳本按字段爲單位進行工作,並刪除每個條目開始和結尾的引號,但是如果您有3列或4列以上的複製,粘貼更改爲每個新的列名都需要很長時間。任何想法如何讓這個循環遍歷每一列?重複刪除48個字段中的引號

--Removing quotes back and front from fields where datetime_updated is not blank 
UPDATE [Majestic].[dbo].hdiyouth_school_2 
SET datetime_updated=left(right(cast(datetime_updated as nVarchar), 
    LEN(cast(datetime_updated as nVarchar))-1), 
    LEN(cast(datetime_updated as nVarchar))-2) 
WHERE datetime_updated IS NOT NULL AND datetime_updated LIKE '"%"' 
+0

什麼版本的SQL? – MyItchyChin 2012-02-23 13:10:41

+0

對不起,SQL Server Management Studio 2005 – hermanvn 2012-02-23 13:28:54

回答

1

可以自動生成每列一個類似的查詢,以這樣的方式:

select 
'UPDATE [Majestic].[dbo].hdiyouth_school_2 
SET ['+column_name+']=left(right(cast(datetime_updated as nVarchar), 
    LEN(cast(datetime_updated as nVarchar))-1), 
    LEN(cast(datetime_updated as nVarchar))-2) 
WHERE datetime_updated IS NOT NULL AND datetime_updated LIKE ''"%"'';' 
from INFORMATION_SCHEMA.COLUMNS 
where TABLE_NAME='Employee' and TABLE_SCHEMA='HumanResources' 
+0

嗨,我該如何自動生成它?我在哪裏可以獲得TABLE_SCHEMA的詳細信息? – hermanvn 2012-02-23 13:42:29

+0

編輯TABLE_NAME和TABLE_SCHEMA以匹配要更新的表,並在SSMS中針對數據庫運行。將結果複製並粘貼到新的查詢選項卡。 INFORMATION_SCHEMA視圖可以在SSMS對象資源管理器中找到,在您的數據庫樹的視圖 - 系統視圖下。 – 2012-02-23 13:51:24

+0

如果您將此方法擴展到更復雜的場景,請閱讀http://sqlblog.com/blogs/aaron_bertrand/archive/2011/11/03/the-case-against-information-schema-views.aspx。我遠離'INFORMATION_SCHEMA'是因爲它們不完整,我寧願編寫相同的元數據集,而不是試圖記住我可以從他們那裏得到什麼以及我需要從別處獲得什麼的規則。 – 2012-02-23 14:22:27