Sql-Server

轉換值後將數據從一個表插入到另一個表

  • September 7, 2017

我有一個#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 但沒有表名。這是另一個問題!

引用自:https://dba.stackexchange.com/questions/76397