一张表 : 姓名  地址                       身份证              性别  
          老陈  南昌市西湖区北京西路XXX号   360104198708183823  男
我需要他成为 一个这样的表    姓名 年龄段  市  区 性别其中 年龄段是这样分的 1:18岁以下 2:18-24 3: 25-35 4:35以上
性别 1: 男 2:女
  这张表就需要 以上条件 成为:
                           老陈   2   南昌市  西湖区 1
这样的表该如何处理 谢谢各位了 越详细越好! 

解决方案 »

  1.   

    性别 
    可以用 If(性别='男',1,2)年龄段
    可以用 internval( 年龄,0,18,25,35)南昌市  西湖区 
    你可以看看能不能找到一份公安系统的身份证前6,或者前4位的对照表。
      

  2.   

    http://www.cnblogs.com/ashun/archive/2007/04/12/idcard-areacode.html
    身份证号码前六位所代表的省,市,区, 以及地区编码下载如果你已经有和身份证号码,则可以在GOOGLE找一下 身份证号码 地区代码
      

  3.   

    张表 : 姓名  地址                      身份证              性别  
              老陈  南昌市西湖区北京西路XXX号  360104198708183823  男 
    我需要他成为 一个这样的表    姓名 年龄段  市  区 性别 其中 年龄段是这样分的 1:18岁以下 2:18-24 3: 25-35 4:35以上 
    性别 1: 男 2:女 
    --------------------------------
    姓名 直接查询 年龄段你可以单独建一个表 flag floordate ceildate
    对于年龄的查询也可以
    mysql> select substring(right(130681198701254965,12),1,8);
    +---------------------------------------------+
    | substring(right(130681198701254965,12),1,8) |
    +---------------------------------------------+
    | 19870125                                    |
    +---------------------------------------------+
    1 row in set (0.02 sec)
    对于市区就截取字符串  
      

  4.   

    关于市区 类似aa市bb区 :aaSbbQ
    mysql> select substring("aaSbbQ",1,instr('aasbbQ','S'));
    +-------------------------------------------+
    | substring("aaSbbQ",1,instr('aasbbQ','S')) |
    +-------------------------------------------+
    | aaS                                       |
    +-------------------------------------------+
    1 row in set (0.03 sec)
    mysql> select substring("aaSbbQ",instr('aasbbQ','S')+1,instr('aasbbQ','Q'));
    +---------------------------------------------------------------+
    | substring("aaSbbQ",instr('aasbbQ','S')+1,instr('aasbbQ','Q')) |
    +---------------------------------------------------------------+
    | bbQ                                                           |
    +---------------------------------------------------------------+
    1 row in set (0.00 sec)
      

  5.   

    张表 : 姓名  地址                      身份证              性别  
              老陈  南昌市西湖区北京西路XXX号  360104198708183823  男 
    我需要他成为 一个这样的表    姓名 年龄段  市  区 性别 其中 年龄段是这样分的 1:18岁以下 2:18-24 3: 25-35 4:35以上 
    性别 1: 男 2:女 
    -------------------------------- 
    姓名 直接查询 年龄段你可以单独建一个表 flag floordate ceildate 
    对于年龄的查询也可以 
    SQL codemysql> select substring(right(130681198701254965,12),1,8);
    +---------------------------------------------+
    | substring(right(130681198701254965,12),1,8) |
    +---------------------------------------------+
    | 19870125                                    |
    +---------------------------------------------+
    1 row in set (0.02 sec)对于市区就截取字符串 不明白这是什么意思,最好能详细点, 那个年龄段也能举个例子么?
      

  6.   

    如果是一个address字段下面的内容 进行 分区  改如何处理 ?
      

  7.   

    其实这个需求,你只要分析你的数据的规律,利用函数就能处理处理出来了,给个你参考下:mysql> select  case when year(now())-substring('360104198708183823',7,4)<18 then
     1
        ->  when year(now())-substring('360104198708183823',7,4) between 18 and 24 t
    hen 2
        ->  when year(now())-substring('360104198708183823',7,4) between 25 and 35 t
    hen 3
        ->  else 4 end as `年龄段`;
    +--------+
    | 年龄段       |
    +--------+
    |      2 |
    +--------+
    1 row in set (0.03 sec)mysql>