我从数据库中取出类似于这样的:
ABCD1000010000
MC10003500
EP100000
这样的数据现在要求是把后面的0全部去掉,中间的不能去掉用什么sql语句可以实现啊?

解决方案 »

  1.   

    干吗非要用SQL语句,他又不是万能的,实际过程中你能解决问题就行了,哪有那么多顾及
      

  2.   

    oracle 数据库:select rtrim('ABCD1000010000', '0') from dual;  rtrim函数可以从右边将'0'都去掉 中间的保留sql 数据库:select trim(TRAILING '0' from 'ABCD1000010000');  trim 这样写可以满足你的要求sql server 我就不知道了. 祝你工作顺利.
      

  3.   

    我写了个方法,是在从数据库取出字符串之后做处理的,你可以试试!
    public String removLastZero(String str){
    //定义接收处理完后的字符串变量
    String result="";
    //获取传入字符串的长度
    int num=str.length();
    int check=0;
    //如果传入的参数字符个数大于1个
    if (num>=2) {
    for (int i = num; i >=0; i--) {
    System.out.println("循环第:"+i+"次");
    System.out.println("参数:"+str);
    //获取字符串中最后一个字符
    String s=str.substring(i-1,i);
    System.out.println();
    //将得到的字符和0比较,如果不为0的话跳出循环并标记当前字符在字符串中的位置
    if (!s.equals("0")) { 
    check=i;
    break;
    }
    }
    //获取处理完后的字符串
    result=str.substring(0,check);
    }else {
    result=str;  //如果字符串中只有一个字符的话就直接返回
    }

    return result;
    }
    public static void main(String[] args) {
    Validate validate=new Validate();
    String sss=validate.removLastZero("010");
    System.out.println("最终结果:"+sss);
    }
    }
      

  4.   

    sql语句不可以实现吗?????????????
      

  5.   

    为什么要用sql去掉,你在页面显示的时候再处理呗,更简单。
      

  6.   


    好像麻烦了,我用查询的是一个List,然后页面用jstl标签显示若引用4楼的方法,我得先把数据取出,然后再放进去?
    岂不是很麻烦?或许大家有什么更好的方法吗?
      

  7.   

    在表示层的处理方法如下:
    public class test { /**
     * @param args
     */
    public static void main(String[] args) {
    //假设testStr是从数据库中读取出的
    String testStr = "100020001000";

    //遍历它的每个字符串,从最后面的开始
    for(int i=0;i<testStr.length();i++)
    {
    //接收testStr的length
    int testLength = testStr.length();
    //用subString方法判定,最后一个字符是否为 0
    if(0 == Integer.parseInt(testStr.substring(testLength-1)))
    {
    //如果为 0 则重新为testStr赋值(也就是去掉最后面的 0 之后)
    testStr = testStr.substring(0,testLength-1);
    System.out.println(testStr);
    }
    else
    {
    //如果不是 0 则跳出循环
    break;
    }
    }
    }}