在SQL2005查询中执行:
insert into Article(title,content) select top 100 cast(title as nvarchar(255))
,content,cast(cast(classid as varchar(100)) as int) from infodata a where not exists (
select 1 from Article B where b.classid =cast(cast(a.classid as varchar(100)) as int)
)
同在数据库AAA, 有
表Article,Infodata,
表Article:title 字段为nvarchar , content 为ntext, classid 为int
表Infodata:title(ntext),content(ntext),classid(ntext)
从infodata中导入数据到Article,要求过滤掉重复classid( 表infodata,article中classid相同的不导入),
导入后是成功了,但表article中字段值都是空的, 怎么解决?
这个问题第1个回答:
语句拷贝错了?
SQL code
insert into Article(title,content) select top 100 cast(title as nvarchar(255))
,content,cast(cast(classid as varchar(100)) as int) from infodata a where not exists (
select 1 from Article B where b.classid =cast(cast(a.classid as varchar(100)) as int)
)
Article(title,content) 两个字段
cast(title as nvarchar(255))
,content,cast(cast(classid as varchar(100)) as int) 三个字段
这应该报语法错误的
这个问题第2个回答:
估计是语句错了.
先看查询出来的是否有数据,然后看看字段类型是否匹配?
这个问题第3个回答:
sorry,应该是
insert into Article(title,content,classid) select top 100 cast(title as nvarchar(255))
,content,cast(cast(classid as varchar(100)) as int) from infodata a where not exists (
select 1 from Article B where b.classid =cast(cast(a.classid as varchar(100)) as int)
)
谢谢楼上的朋友,谢谢你昨天的解答啊。
这个问题第4个回答:
先执行查询, 看看查询结果是否你需要的
SQL code
select top 100 cast(title as nvarchar(255))
,content,cast(cast(classid as varchar(100)) as int) from infodata a where not exists (
select 1 from Article B where b.classid =cast(cast(a.classid as varchar(100)) as int)
)
这个问题第5个回答:
text还是少用点,试下
SQL code
insert into Article(title,content,classid) select top 100 cast(title as nvarchar(255))
,cast(content as nvarchar(255)),cast(cast(classid as varchar(100)) as int) from infodata a where not exists (
select 1 from Article B where b.classid =cast(cast(a.classid as varchar(100)) as int)
)
这个问题第6个回答:
拷贝错了,明天提示成功, 但打开一看,字段都是空的。
这个问题第7个回答:
insert的列數與select的列數不一致
这个问题第8个回答:
1.如1楼说的语法错误。
2.
SQL code
select top 100 cast(title as nvarchar(255))
,content,cast(cast(classid as varchar(100)) as int) from infodata a where not exists (
select 1 from Article B where b.classid =cast(cast(a.classid as varchar(100)) as int)
)
是否能得到你想要的结果?
这个问题第9个回答:
可能由于类型转换时造成的数据丢失。
ntext和nvarchar的长度有很大差别
这个问题第10个回答:
实在太sorry了,浪费大家时间了,源表的N多空记录。 实在抱歉。马上结帐,省得在遗害大众。
这个问题第11个回答:
高手云集,撤……
这个问题第12个回答:
1. 影响的行数是多少?
2. 你直接执行去掉 insert 执行查询, 检查过结果是正确的吗?
3. 你原来的表中是不是本来就有一堆空数据?