
很急!请教sql高手!
当我在身份证号控件中中录入身份号证时,系统会自动的将身份证号中的生日日期存放到生日列表框中,这个我用sql该如何写?问题补充:比如现在我的身份证号字段是CrdID生日字段...
当我在身份证号控件中中录入身份号证时,系统会自动的将身份证号中的生日日期存放到生日列表框中,这个我用sql该如何写?问题补充:
比如现在我的
身份证号字段是CrdID
生日字段是BirDate
表名是HRInfo
现在我的语句如下,但是却出现了错误,忘高手指点:
select case when len(IDCard)=18 then substring(IDCard,7,8) as BirDate else cast('19'+substring(IDCard,7,6) as BirDate) end as BirDate
不行啊,老是报错说是我语法错误的
身份证号字段是CrdID Nvarchar
生日字段是BirDate Datetime
表名是HRInfo 展开
比如现在我的
身份证号字段是CrdID
生日字段是BirDate
表名是HRInfo
现在我的语句如下,但是却出现了错误,忘高手指点:
select case when len(IDCard)=18 then substring(IDCard,7,8) as BirDate else cast('19'+substring(IDCard,7,6) as BirDate) end as BirDate
不行啊,老是报错说是我语法错误的
身份证号字段是CrdID Nvarchar
生日字段是BirDate Datetime
表名是HRInfo 展开
4个回答
展开全部
简单问题复杂化。逻辑没搞清楚。
根据你的设计,如果说,生日完全是根据身份证号来取的,那你还在前台加一个生日下拉菜单,不是多余么?为什么不删除掉!!很明显,你的问题应该用触发器解决,最方便。
在你的表HRInfo上创建一个insert触发器,插入数据后,更改生日日期。
create trigger in_HRInfo on HRInfo
for insert
as
begin
update in_HRInfo set BirDate=case when len(CrdID)=18
then substring(CrdID,7,8) else
'19'+Convert(varchar(10),substring(CrdID,7,6)) end
from inserted a,in_HRInfo b where a.user_no=b.user_no
--user_no表示是表中记录的唯一标识,更改你自己的对应的字段
end
根据你的设计,如果说,生日完全是根据身份证号来取的,那你还在前台加一个生日下拉菜单,不是多余么?为什么不删除掉!!很明显,你的问题应该用触发器解决,最方便。
在你的表HRInfo上创建一个insert触发器,插入数据后,更改生日日期。
create trigger in_HRInfo on HRInfo
for insert
as
begin
update in_HRInfo set BirDate=case when len(CrdID)=18
then substring(CrdID,7,8) else
'19'+Convert(varchar(10),substring(CrdID,7,6)) end
from inserted a,in_HRInfo b where a.user_no=b.user_no
--user_no表示是表中记录的唯一标识,更改你自己的对应的字段
end
追问
其实是这样的,我们只是为了做一个特定,因为我们发现在实际的生活中有人的身份证号码登记是有错误的,所有我们虽然在输入身份证号码的时候将生日信息提取出来放在了生日框中,但如果此用户发现生日不对时就可以通过生日下拉菜单来重新选择实际正确的日期作为生日的。
所以现在的问题就是我那个语句出错了,而且字段有些信息如下,就是他们的类型是不同的:
现在字段的类型也是不一样的怎么办?
追答
不知道你用没用过网上的,搜狐啊,百度啊,腾讯啊,他们会直接让你选择你的生日,不会这样子弄。从交互角度看,我觉得没有任何必要这样做,但是还是给你答案吧
select case when len(IDCard)=18 then
substring(IDCard,7,8) as BirDate
else '19'+Convert(varchar(10),substring(IDCard,7,6)) as BirDate) end as BirDate

2025-08-05 广告
Paykka 从多个环节帮助用户节省时间,开户最快 1 个工作日完成,本地货币结算当日到账,提现更是几秒内就能完成。全流程都极大地缩短了时间成本,减少了用户的等待时间,提高了资金流转效率。...
点击进入详情页
本回答由paykka提供
展开全部
select case
when len(IDCard)=18 then substring(IDCard,7,8)
else cast('19'+substring(IDCard,7,6)
end
as BirDate
when len(IDCard)=18 then substring(IDCard,7,8)
else cast('19'+substring(IDCard,7,6)
end
as BirDate
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-06-22
展开全部
select case
when len(IDCard) = 18 then
substring(IDCard, 7, 8)
else
substring(IDCard, 7, 6)
end as BirDate
from HRInfo
when len(IDCard) = 18 then
substring(IDCard, 7, 8)
else
substring(IDCard, 7, 6)
end as BirDate
from HRInfo
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你的意思是在编程的时候,需要根据输入的身份证号,直接在生日里出现,而且写入到数据库中;
如果是这样的话,不仅仅是根据身份证号的字符串组成生日字符串,而且还是根据数据库字段类型进行转换,一般来说日期都有自己的格式,不只是字符哦
如果是这样的话,不仅仅是根据身份证号的字符串组成生日字符串,而且还是根据数据库字段类型进行转换,一般来说日期都有自己的格式,不只是字符哦
追问
是这样的,那现在我该怎么改?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询