我的数据库里有两张桌子。
Other具有RMA_noas'Number'
&表Material_Require_Master具有RMA_NoasTEXT
我想执行一个查询,它可以输出具有匹配RMA_No的元组。
到目前为止我已经做到了。

String sql="Select RMA_Master.RMA_No,Call_Date,Source,Item_name,
                   Booking_Desc,Customer_name,Customer_contact,
                   AssignedTo,Part_No,Part_Name,Part_Quantity,
                   Part_Price,Total
            From RMA_Master,Material_Require_Master
            WHERE RMA_Master.RMA_No=Material_Require_Master.RMA_No AND
                  RMA_Master.MaterialRequireStatus='"+materialStatus+"'
            UNION
            Select Other.RMA_No,Call_Date,Source,Item_name,
                   Booking_Desc,Customer_name,Customer_contact,
                   AssignedTo,Part_No,Part_Name,Part_Quantity,
                   Part_Price,Total
            From Other,Material_Require_Master
            WHERE String.valueOf(Other.RMA_No)= Material_Require_Master.RMA_No AND
                  Other.MaterialRequireStatus='"+materialStatus+"'";

PreparedStatement pst=con.prepareStatement(sql);
ResultSet rs=pst.executeQuery();
table.setModel(DbUtils.resultSetToTableModel(rs));
rs.close();
pst.close();

我的stacktrace是:
Exception: [Microsoft][ODBC Microsoft Access Driver] Undefined function 'String.valueOf' in expression.

当我不使用String.valueOf时:
String sql="Select RMA_Master.RMA_No,Call_Date,Source,Item_name,Booking_Desc,Customer_name,Customer_contact,AssignedTo,Part_No,Part_Name,Part_Quantity,Part_Price,Total From RMA_Master,Material_Require_Master WHERE RMA_Master.RMA_No=Material_Require_Master.RMA_No AND RMA_Master.MaterialRequireStatus='"+materialStatus+"' UNION Select Other.RMA_No,Call_Date,Source,Item_name,Booking_Desc,Customer_name,Customer_contact,AssignedTo,Part_No,Part_Name,Part_Quantity,Part_Price,Total From Other,Material_Require_Master WHERE Other.RMA_No= Material_Require_Master.RMA_No AND Other.MaterialRequireStatus='"+materialStatus+"'";

发生以下情况:
Exception: [Microsoft][ODBC Microsoft Access Driver] Type mismatch in expression.

最佳答案

我觉得你把sql和java搞混了。
String.valueOf()是一种不能在sql语句中使用的java方法。SQL中有STR()可用于将数字转换为字符串。将其与LTRIM()结合使用,以删除空白填充,例如LTRIM(STR(Other.RMA_no))
但不管怎样,另一个办法是更好的由@gord提出。

关于java - 如何比较整数类型记录与MS_Access中的字符串类型记录?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29297862/

10-08 22:30