我想针对下面的一个表进行操作,有2个问题,请各位大侠帮帮忙!
原来的表是这样的:
编号 性别 婚否 档案号 档案级别
1556494565321651 男 是
1556484565321651 男 是
1556474565321651 女 否
1556474565321651 女 是
现在我需要实现这样的结果:
编号 性别 婚否 档案号 档案级别
1556494565321651 男 是 945-65-32 0
1556484565321651 男 是 845-65-32 1
1556474565321651 女 否 745-65-32 2
1556474565321651 女 是 745-65-32 2 ------------------------------------------------------------------------------------
[举例]
编号 性别 婚否 档案号 档案级别
1556494565321651 男 是 945-65-32 0 [问题及说明]
1、提取'编号'字段中第6位开始的连续7位数字(即9456532),并用短线隔开,来最为档案号;然后把结果写入'档案号'字段内。
2、判断'编号'字段中第6位开始的连续3数字(即945),是否在一定范围内,然后确定级别,然后把结果写入'档案级别 '字段内。如我这样规定,945~1044范围内即为0,845~944为1,745~844为2,645~744为3,……; 我是一个菜鸟,所以需要各部分完整代码,谢谢啦!
原来的表是这样的:
编号 性别 婚否 档案号 档案级别
1556494565321651 男 是
1556484565321651 男 是
1556474565321651 女 否
1556474565321651 女 是
现在我需要实现这样的结果:
编号 性别 婚否 档案号 档案级别
1556494565321651 男 是 945-65-32 0
1556484565321651 男 是 845-65-32 1
1556474565321651 女 否 745-65-32 2
1556474565321651 女 是 745-65-32 2 ------------------------------------------------------------------------------------
[举例]
编号 性别 婚否 档案号 档案级别
1556494565321651 男 是 945-65-32 0 [问题及说明]
1、提取'编号'字段中第6位开始的连续7位数字(即9456532),并用短线隔开,来最为档案号;然后把结果写入'档案号'字段内。
2、判断'编号'字段中第6位开始的连续3数字(即945),是否在一定范围内,然后确定级别,然后把结果写入'档案级别 '字段内。如我这样规定,945~1044范围内即为0,845~944为1,745~844为2,645~744为3,……; 我是一个菜鸟,所以需要各部分完整代码,谢谢啦!
解决方案 »
- delphi梦魇怎么清除啊,金山的专杀根本没用
- 如何给类 指定事件
- 急!!!错误提示:Table does not suppert this operation because it is not uniquely indexed
- 请指教??
- delphi 或 ado 竟然会产生这样的错误? 估计只有borland公司自己能解决了!
- File List View 的问题
- 空格这个字符
- 请大家帮我推荐一下介绍网络编程的书
- 发出的贴子没人应答,怎么把分收回来?
- 三个看似简单,并且非常类似的问题, 一个比一个难. 第一流 的 ( SELECT ) 高手请进.
- delphi操作excel数据遇到有2个问题,请各位大侠帮帮忙!
- 请高手给个办法,换了个新的地磅就不能和pc机器连接上
s,t1,t2,t3:string;
begin
with adoquery1 do
begin
first;
while not eof do
begin
s:=copy(fieldbyname('编号').asstring,6,7);
t1:=copy(s,1,3);
t2:=copy(s,4,2);
t3:=copy(s,6,2);
append;
edit;
fieldbyname('档案号').asstring:=t1+'-'+t2+'-'+t3;
if (strtoint(s)>=945) and (strtoint(s)<=1044) then fieldbyname('档案级别').value:=0
else if (strtoint(s)>=845) and (strtoint(s)<=944) then fieldbyname('档案级别').value:=1
else if (strtoint(s)>=745) and (strtoint(s)<=844) then fieldbyname('档案级别').value:=2
else if (strtoint(s)>=645) and (strtoint(s)<=744) then fieldbyname('档案级别').value:=3;// 此处你自己再加
post;
end;
next;
end;
end;
以SQL SERVER为例:update t
set 档案号 = substring(编号,6,3) + '-' + substring(编号,9,2) + '-' + substring(编号,11,2)
档案级别 = (CASE
WHEN substring(编号,6,3)>='945' AND substring(编号,6,3)<='999' THEN 0
WHEN substring(编号,6,3)>='845' AND substring(编号,6,3)<='944' THEN 1
WHEN substring(编号,6,3)>='745' AND substring(编号,6,3)<='844' THEN 2
END)(三位字符怎么会有1044?)
我首先用了xinxinshou2009 (新新手)的方法,后又用了windindance(风舞轻扬·白首为功名)的方法,因为我的数据只有几千条,所以在速度上没什么区别。不过从这里我学到的远不止这个问题的答案本身,还有一些设计上的思路该如何做。
这几天我整优秀党员材料来交去了,所以晚了些结贴,不好意思了。有你们的帮助,我没有理由停滞不前。我要向你们学习,以后我能帮助人的时候,一定热心去帮助人的。