免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5718 | 回复: 11
打印 上一主题 下一主题

求一个SQL或存储过程的写法 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-12-08 10:07 |只看该作者 |倒序浏览
数据库中保存着一个人的身份证号码、出生日期、性别等资料,现在由于担心在录入资料时出现错误,所以要核对资料的正确性,要示判断身份证号码中的出生日期、性别和数据库中录入的出生日期、性别是否相符
我觉得用SQL查不出来,需要用存储过程才行

有谁能给个写法?

论坛徽章:
0
2 [报告]
发表于 2009-12-08 11:30 |只看该作者
这个不一定在数据库端做,在前端做也可以。
如果在后端验证,可以做个trigger

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00
3 [报告]
发表于 2009-12-08 12:17 |只看该作者
原帖由 friendmine 于 2009-12-8 11:30 发表
这个不一定在数据库端做,在前端做也可以。
如果在后端验证,可以做个trigger


人数是非常多的,如果在前端做,每条记录都要查询出来再判断,会不会时间长了点?
我不会存储过程,所要想请人指点下怎么写这样的存储过程

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
4 [报告]
发表于 2009-12-08 13:13 |只看该作者
可以写PG存储过程的语言很多的哦。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00
5 [报告]
发表于 2009-12-08 13:47 |只看该作者
原帖由 renxiao2003 于 2009-12-8 13:13 发表
可以写PG存储过程的语言很多的哦。

能不能用java或C写个学习下?

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
6 [报告]
发表于 2009-12-08 18:53 |只看该作者
这个好像不能把。用Perl或者pgsql是可以的。具体查看Postgresql的官网介绍。

论坛徽章:
0
7 [报告]
发表于 2009-12-08 21:21 |只看该作者
在前段输入的时候用js就可以,去身份证的那个字段,从第7位到第14位不是出生日期么~取出来重组一下就可以了。然后第17位就是保存性别的。。。

论坛徽章:
59
2015七夕节徽章
日期:2015-08-24 11:17:25ChinaUnix专家徽章
日期:2015-07-20 09:19:30每周论坛发贴之星
日期:2015-07-20 09:19:42ChinaUnix元老
日期:2015-07-20 11:04:38荣誉版主
日期:2015-07-20 11:05:19巳蛇
日期:2015-07-20 11:05:26CU十二周年纪念徽章
日期:2015-07-20 11:05:27IT运维版块每日发帖之星
日期:2015-07-20 11:05:34操作系统版块每日发帖之星
日期:2015-07-20 11:05:36程序设计版块每日发帖之星
日期:2015-07-20 11:05:40数据库技术版块每日发帖之星
日期:2015-07-20 11:05:432015年辞旧岁徽章
日期:2015-07-20 11:05:44
8 [报告]
发表于 2009-12-09 12:05 |只看该作者
PG的存储过程可以使用下列语言编写:
36. PL/pgSQL - SQL 过程语言
37. PL/Tcl - Tcl 过程语言
38. PL/Perl - Perl 过程语言
39. PL/Python - 过程语言
具体参考:http://www.pgsqldb.org/pgsqldoc-cvs/index.html

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-07-07 06:20:00
9 [报告]
发表于 2009-12-09 13:55 |只看该作者
to_number(case when char_length(sfz)=18 then substring(sfz,17,1) else substring(sfz,15,1) end,'99G999D9S')%2+1) = sex

to_date(case when char_length(sfz)=15 then ('19'||substring(sfz,7,6)) else substring(sfz,7, end,'YYYYMMDD') !=csrq

这样解决了

论坛徽章:
0
10 [报告]
发表于 2009-12-09 22:03 |只看该作者
原帖由 老陈73 于 2009-12-9 13:55 发表
to_number(case when char_length(sfz)=18 then substring(sfz,17,1) else substring(sfz,15,1) end,'99G999D9S')%2+1) = sex

to_date(case when char_length(sfz)=15 then ('19'||substring(sfz,7,6)) else ...




学习了,感谢把最后的解决方法提供出来。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP