我有一张表格如下:
create table dbo.##Table_A00
(
RowNo int,
TRANSACTION_TYPE varchar(3),
ORGANISATION_ID numeric (10),
FILE_TYPE varchar(3),
CREATION_DATE datetime,
CREATION_TIME varchar(3),
GENERATION_NUMBER numeric (6)
)
然而,我使用的源文件是用于捕获平面文件的表,它们可以是任何数据格式。
我在源表中拥有的数据类型如下所示:
CREATE TABLE ##Table_Alltextfiles
(
rowID int identity (1,1),
[Col1] varchar(50),
[Col2] varchar(250),
[Col3] varchar(50),
[Col4] varchar(50),
[Col5] varchar(50),
[Col6] varchar(50),
[Col7] varchar(50)
)
我想要做的是从##Table_A00
(来源)
##Table_Alltextfiles
(目的地)所有行
但是由于数据类型不匹配,我遇到了这样的问题,并且我尝试将其转换为未成功。
我可以做些什么来将varchar的值提供给它的适当目的地,即如果它是一个日期字段,或者它是一个数字。
这就是我一直在做的事情:
insert into dbo.##Table_A00
select
rowID,
col1, cast(col2 as numeric (10)),
col3, cast(col4 as date),
col5, cast(col6 as numeric (6))
from
##Table_Alltextfiles
where
col1 = 'A00'
谢谢
答案 0 :(得分:1)
尝试使用以下查询。
insert into dbo.##Table_A00
select
rowID,
SUBSTRING(col1,1,3), case when ISNUMERIC(col2)=1 THEN cast(col2 as numeric (10)) ELSE NULL END,
SUBSTRING(col3,1,3), case when ISDATE(col4)=1 THEN cast(col4 as datetime) ELSE NULL END,
SUBSTRING(col5,1,3), case when ISNUMERIC(col6)=1 THEN cast(col6 as numeric (6)) ELSE NULL END
from
##Table_Alltextfiles
where
col1 = 'A00'