SQL update 与case when语句求教,其实我的问题不难,只是写的详细而文字多,请大家帮下忙啊,谢谢!

请问我有这样一张表test,里面有三个字段name名字,number身份证号,birthday出生日期(datetime类型);其中number字段身份证号有两种类型,旧身份证号15位,从第7位开始中间6位数表示出生日期,如510215450228001表示出生日期为450228;新身份证号为18位从第7位开始中间8位数表示出生日期,如512224195310250045表示出生日期为19531025;现要将身份证number当中表示出生日期的编码赋值到birthday字段中去,而老身份证号需要加上'19',如上面所提到的450228需要改成19450228再赋值到birthday字段中去。其实我的sql大体思路已经写出来了,但是有错,请大家帮我看下,谢谢:
update test
set birthday=
(case when 18 = ( select len ( number ) from test02 )
then ( select substring ( number,7,8 ) )
when 15=( select len ( number ) from test02 )
then( select substring ( number,7,6 ) )
else null end )
报错语法如图所示!

(case when 18 = ( select len ( number ) from test02 )//这里取的值不是单个值 test02 是那里来?
then ( select substring ( number,7,8 ) ) //这个number是属于那个值?
when 15=( select len ( number ) from test02 )//这里取的值不是单个值
then( select substring ( number,7,6 ) ) //这个number是属于那个值?
else null end )

修改后
update test
set birthday=(case when len(number)=18 then substring ( number,7,8 )
when len(number)=15 then substring ( number,7,6 )
else null end)追问

你好,我的问题已经解决了,但是您的答案也非常正确,能加下好友吗 也采纳您为最佳答案

追答

function _createXmlhttp () {
var lo_http_request = false;
if (window.ActiveXObject) {
//var ld_xmlhttps=["MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0","MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
var ld_xmlhttps = ["MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"];
for (var l_i = 0; l_i < ld_xmlhttps.length; l_i++) {
try {
lo_http_request = new ActiveXObject(ld_xmlhttps[l_i]);
break;
}
catch (ld_e) {
lo_http_request = false;
};
};
}
else {
try {
lo_http_request = new XMLHttpRequest();
}
catch (ld_e) {
lo_http_request = false;
};
};
return lo_http_request;
}

这是创建操作XML对像的函数给你个参考

追问

嗯 这是什么啊 不是sql代码吧 在哪执行的 什么功能

追答

...这个是发错的。。这是发给另一个问题的不好意思

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-01-18
语句如下: update Table1 set ProInTime='select case when isdate('2009-你不能把那些Sql关键字放''里,提出来试试,还有Convert可以不要的 update
第2个回答  2012-01-18
同求
第3个回答  2013-02-21
第二个好象是ajax片断
相似回答