m_id,m_user,m_content,Convert(varchar(10),m_date,120)as m_date1,(m_content.length > 25 ? m_content. as m_content1 : substring(m_content,0,25)as m_content1) from Pmessage這樣判斷m_content的長度是否大于25,是則取前面的否則取后面的,出错了,提示">"附近出错!

解决方案 »

  1.   

    这哪里是C#语法...SQL没有三元运算符,改成IIF语句,去看SQL教程...IIF(m_content.length>25,m_content,substring(m_content,0,25)) as m_content1
      

  2.   

    select case when m_content.length > 25 then m_content else substring(m_content,0,25)end as  m_content1
      

  3.   

    VB.NET , SQL中确实没有 C# , C++ 中 :" 条件 ? 条件成立时返回内容: 条件不成立时返回内容"
    但是有这个 IIF, 其一定意义上也是 三元运算符 ,呵呵
    IIF(条件,条件成立时返回内容,条件不成立时返回内容)IIf 函数:http://msdn.microsoft.com/zh-cn/library/27ydhh0d.aspxVisual Basic 2008 新引入了一个使用短路计算的 If 运算符。
    让编程更加简便了,减少IIF中nothing的判断
      

  4.   

    还是出错:
    第 1 行: '>' 附近有语法错误。 
    说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.Data.SqlClient.SqlException: 第 1 行: '>' 附近有语法错误。源错误: 
    行 31:         sda.SelectCommand = new SqlCommand("select m_id,m_user,m_content,Convert(varchar(10),m_date,120)as m_date1,IFF(m_content.length>25,m_content,substring(m_content,0,25)) as m_content1 from Pmessage", con);
    行 32:         DataSet ds = new DataSet();
    行 33:         sda.Fill(ds, "Mes");
    行 34:         this.Mes.DataSource=ds.Tables["Mes"];
    行 35:         this.Mes.DataKeyNames=new string[] {"m_id"};
     
      

  5.   

    select case when m_content.length > 25 then m_content else substring(m_content,0,25)end as  m_content1
      

  6.   

    (case when len(m_content)> then m_content else substring(m_content,0,25) end) as  m_content1 
      

  7.   


    select case when len(m_content) >25 then m_content else substring(m_content,0,25) end as  m_content  from Pmessage 
    或者直接就截取
    select substring(m_content,0,25) as  m_content  from Pmessage 
      

  8.   

    应该是大于25就截取前25,否则就显示m_content这个字段吧
    select case when len(m_content) >25 then  substring(m_content,0,25) else m_content  end as  m_content  from Pmessage 或者直接就截取 select substring(m_content,0,25) as  m_content  from Pmessage 
      

  9.   

    直接就截取不能实现我要的那个功能
    我用了上面的,还出错:
    异常详细信息: System.Data.SqlClient.SqlException: 函数 len 的参数 1 的数据类型 text 无效。m_conetnt 是text类型 为什么会无效的?
      

  10.   


    把 len 修改为:datalengthselect 
    case when datalength(m_content) >25 then  substring(m_content,0,25) 
         else m_content  end as  m_content  
    from Pmessage 
      

  11.   

    len  不能对 Text 进行计算!
      

  12.   

    SQL:结构化查询语言,也是一种独立的,面向关系数据库的开发语言规范。
    SQL server:是微软推出的,基于SQL(符合该规范)的数据库系统。它跟C#不是同一个东西。
    不要再搞混咯
      

  13.   

    还有一个问题,本身数据表中没有ID这一列,但我想在gridview显示数据时加上ID这一列,我在后台应该怎样写呢?
    后台代码:       
     SqlConnection con = Dcon.createConnection();
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = new SqlCommand("select m_id,m_user,m_content,Convert(varchar(10),m_date,120)as m_date1,case when datalength(m_content) >50 then substring(m_content,0,25)+'...' else  m_content end as  m_content1 from Pmessage", con);
            DataSet ds = new DataSet();
            sda.Fill(ds, "Mes");
            this.Mes.DataSource=ds.Tables["Mes"];
            this.Mes.DataKeyNames=new string[] {"m_id"};
            this.Mes.DataBind();