有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在equal to运算符中,数据类型varchar(max)和text不兼容。在SQLServer2005中如何解决?

while(rs.next())
{
    String key=rs.getString(1);
    String val=rs.getString(2);       
    it=ar1.get(k).toString();
    if(it.trim().equals(key.trim()))   
    {
        val=val.substring(1);
        val=val+"1";
    }
    else
    {
        val=val.substring(1);
        val=val+"0";
    }

    st = con.prepareStatement("update win set seq=? where keyy=?");
    st.setString(1,val);
    st.setString(2,key); //here i am getting exception
    st.executeUpdate();
    st.close();
}

如果我将表中seq和keyy的数据类型更改为text,则会显示数据类型text和text在equal to运算符中不兼容


共 (1) 个答案

  1. # 1 楼答案

    永远不会弄乱文本数据类型。但是,撇开关于文本“键”列是否明智的问题不谈,您需要使用like。不能对TEXTNTEXT(=,<;等)使用标准比较运算符。 您可以省略通配符,这样它的行为就像一个精确匹配。因此,如果keyy列是文本:

    update win set seq=? where keyy like ?
    

    顺便说一句,TEXTNTEXT已经被几个版本的SQL Server弃用,我相信总有一天他们会放弃它。您可能应该考虑转换为CHARVARCHAR