SQL2000存储过程里里不同表间CHAR与INT的转换
Q:在第一个表里存储是用的CHAR的,同样的数据要转到第二个表里的INT里,原来的数据一般也是不会出错的,都是以文本形式的数字,但有时候会有一些垃圾数据出来,比如全角数字之类的,这样在插入的时候会出错,过程中断。至于前面的判断修改已经不可能了,只能想办法在这个存储过程里处理。原来的垃圾程序,现在能维护的就这些了。
SQL类似于:
insert into a(id) --ID为INT类型
select b.id --ID为CHAR类型
from b
偶想要出错就忽略过去,如何处理?
谢谢!!
insert into a(id)
select b.id
from b
where isnumeric(id)= 1
insert into a(id) --ID为INT类型
select case when isnumeric(b.id)=1 then cast(b.id as int) else null end --ID为CHAR类型
from b
declare @ta table(id int)
declare @tb table(id varchar(5))
insert @tb select 'af' --英文
insert @tb select '12' --全角
insert @tb select '1a s' --混合
insert @tb select '12 21' --中间空格
insert @tb select '12221' --正确
insert @tb select '1232 ' --后有空格
insert @tb select ' 2421' --前有空格
insert @tb select '02421' --前有0
insert into @ta(id)
select b.id
from @tb b
where isnumeric(id)= 1
select * from @ta
/*
id
-----------
12221
1232
2421
2421
(所影响的行数为 1 行)
*/
页:
[1]