我的数据库里的一个表里的数据如下:
id name
1 马云
2 张云
3 张三
4 李国
5 李四
6 马二
7 粟裕逸
8 麻七
9 朱小红我要实现的时输出的效果如下M
马云
马二
麻七
L
李国
李四
粟裕逸
Z
张云
张三
朱小红
请问如何编写这程序?

解决方案 »

  1.   


    BEGIN 
        DECLARE V_RETURN VARCHAR(255);
        DECLARE V_BOOL INT DEFAULT 0;
              DECLARE FIRST_VARCHAR VARCHAR(1);
     
        SET FIRST_VARCHAR = left(CONVERT(P_NAME USING gbk),1);
        SELECT FIRST_VARCHAR REGEXP '[a-zA-Z]' INTO V_BOOL;
        IF V_BOOL = 1 THEN
          SET V_RETURN = FIRST_VARCHAR;
        ELSE
          SET V_RETURN = ELT(INTERVAL(CONV(HEX(left(CONVERT(P_NAME USING gbk),1)),16,10),   
              0xB0A1,0xB0C5,0xB2C1,0xB4EE,0xB6EA,0xB7A2,0xB8C1,0xB9FE,0xBBF7,   
              0xBFA6,0xC0AC,0xC2E8,0xC4C3,0xC5B6,0xC5BE,0xC6DA,0xC8BB,  
              0xC8F6,0xCBFA,0xCDDA,0xCEF4,0xD1B9,0xD4D1),   
          'A','B','C','D','E','F','G','H','J','K','L','M','N','O','P','Q','R','S','T','W','X','Y','Z');  
        END IF;
        RETURN V_RETURN;
    END这个是sql function , 然后使用这个function   然后order by 这东西就好了。。
      

  2.   

    把数据库里的这个表的字段如下:
    id name flag
    1 马云  M
    2 张云  Z
    3 张三  Z
    4 李国  L
    5 李四  L
    6 马二  M
    类似这样的,取的时候在分类,不是也可以达到效果吗