是这样的,比如 我数据库中有这么几个字段,id(varchar),content(varchar),审核(bit),我想把数据库中content字段的内容按照指定的长度截取出来,超过指定长度用...表示,然后显示在前端。那么sql语句是怎么写的呢。
String sql="select id,Len(content)>16?Substring(content,0,16)+'...':content from tb ";
上面这样写 对吗?好像有错误啊

解决方案 »

  1.   


    String sql="select id,(case when length(content)>16 then substr(content,1,16)||'...'
     else content end) content from tb ";
      

  2.   

    楼上的不对,我用的是Sqlserver数据库,里面的内置函数是Len和Substring,但是即使改成这样,也是不行的,貌似Substring函数要求的第一个是表达式,用数据库的字段好像不对啊!即Substring(content,0,16)会提示字段content无效
      

  3.   

    不是oracle的话,你可以这样,也建议这样。sql不用做任何东西,查询出的结果结在java中做处理,在java中截取再封装一次就ok。
      

  4.   

    建议全部取出后再处理,要求不严的话用JTSL标签截取处理,要求比较严的话可以直接写个java类,使用的时候直接调用,传递截取字节长度和补足的...就行了
    可以参考下面的类
    public static String getStringTrim(String str, int strLength) {
    String trimStr = new String();
    str=HtmlUtil.getHtmlContent(str);
    if(str!=null&&str.length()>strLength){
    trimStr = str.substring(0, strLength) + "...";
    return trimStr;
    }else{
    return str;
    }
    }
      

  5.   

    很好,不过我也想知道MySQL如果截取字符串!谁能帮我们解答吗?
      

  6.   

    substring(s, position, length) - 传回字符串里的字符串,s 是本来的字符串,position 是开始的位置,length 是传回的字数
      

  7.   

    在sql里是不可以用?:运算滴
      

  8.   

    建议写一个通用类来处理字符串,然后再封装在list里面。
    如:public static String getStringtrim(String str, int strlen) {
    if (str != null && str.length() > strlen) {
    return str.substring(0, strlen) + "...";
    } else {
    return str;
    }
    }
      

  9.   

    substring(s, position, length)这个方法是有,但是s不能是数据库中的字段啊,我想是截取字段的长度,这里好像用不了。单独写一个处理类还是蛮不错的。
      

  10.   

    substring(字段, 0, 10)  as 别名,