Sql-Server
轉換值後將數據從一個表插入到另一個表
我有一個
#temp
表,其中包含需要插入到名為Customer
. 兩個表的列名完全相同,但數據類型不同。因此,在將數據插入Customer
表之前,我需要從一種類型轉換為另一種類型。該解決方案必須針對動態條件實施。即,我不知道列名或數據類型。
DECLARE @SQL varchar(8000) SET @SQL = '' SELECT @SQL = @SQL + ' CAST(' + COLUMN_NAME + ' as ' + ISNULL(DATA_TYPE + '(' + CAST(CHARACTER_OCTET_LENGTH as varchar(20)) + ') )','') + ' as ' + COLUMN_NAME + ',' FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'YourPermTable' SET @SQL = SUBSTRING(@SQL,1,LEN(@SQL)-1) SET @SQL = 'SELECT ' + @SQL + ' FROM YourTempTable' PRINT @SQL
添加插入部分,它應該可以解決問題!
我會編寫一些程式碼來做到這一點,我不確定是否可以使用純 SQL 來實現。您需要動態創建一個(或一些)SQL 語句,這可能是程式部分中的章節的問題,但是:
SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'tablename' AND COLUMN_NAME = 'columnname'
會給你數據類型;然後,您可以從其他表中選擇數據並將其轉換為數據類型,您也可以從 information_schema 中提取 column_name 但沒有表名。這是另一個問題!