日期:2014-05-18  浏览次数:20520 次

SQL错误避免
有如下两个情形,都要保证SQL不报错:

1.向表t增加一个列varchar(20)
2.字符串转成数字

请问怎么实现?貌似需要考虑多种情况

------解决方案--------------------
SQL code
-- 1、加字段,判断该字段如果存在不操作,否则添加字段
if(exists(SELECT * FROM SysColumns WHERE id=Object_Id('yourtable') and [name]='columnname'))
    exec('alter table yourtable add columnname [varchar](20) ');
-- 2、没太懂你的问题
declare @a varchar(20)
set @a = '100' -- 'abc'

-- 变量或sql语句里可以用类似以下的方式处理
set @a = case isnumeric(@a) when 1 then cast(@a as int) else null end;

------解决方案--------------------
1.1判断是否已经存在欲添加的字段名,若存在不操作,不存在添加。
1.2判断添加VARCHAR(20)后表字段的总长度是否超过8060限制。

2.这要看你欲转化的字符串是否有什么规律了,若无规律那只能一个字符一个字符的判断了。