首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

看上这条语句为什么报错

2012-08-11 
看下这条语句为什么报错update kh set kh.客户年龄2012-substring(khb.身份证,7,4)from kh,khb where kh.

看下这条语句为什么报错
update kh set kh.客户年龄=2012-substring(khb.身份证,7,4) from kh,khb where kh.客户姓名=khb.客户姓名

执行报: "varchar 值 '5)36' 转换为数据类型为 int 的列时发生语法错误。"


而执行 select 2012-substring(khb.身份证,7,4) from khb 一切正常,谁知道这是什么问题吗
 

[解决办法]

SQL code
update kh set kh.客户年龄=2012-casr(substring(khb.身份证,7,4) as int) from kh,khb where kh.客户姓名=khb.客户姓名
[解决办法]
你的身份证里面有非法数据,年份的4列有5)36这样的数据存在,你执行正常的没有赋值操作所以不报错,报错是因为截取的要付给整形变量所以报错。
[解决办法]
SQL code
update kh set kh.客户年龄=2012-convert(int,substring(khb.身份证,7,4)) from kh,khb where kh.客户姓名=khb.客户姓名
[解决办法]
SQL code
update kh set kh.客户年龄=2012-cast(substring(khb.身份证,7,4) as int) from kh,khb where kh.客户姓名=khb.客户姓名 

热点排行