나는이 같은 문장을 실행하고 있습니다.VARCHAR 비교 결과가 예기치 않게 나타나는 이유는 무엇입니까?
fld1 VARCHAR(5);
Select * from MyTable where fld1 = 'HELLOWORLD';
은 테이블 만 FLD1 = 'HELLO'어떤 이유로 결과 집합은 결과 행 FLD1 = 'HELLO'로 줘있다.
fld1이 VARCHAR 5이면 분명히 'HELLOWORLD'의 값을 잘라서 쿼리가 모든 값을 그대로 사용하지 않는 이유는 무엇입니까?
내 방법 :
public void Consulta(){
COB_ConexionModulo connPool = null;
COB_ResultadoConexion rc = null;
Connection con = null;
StringBuffer sbQry = new StringBuffer();
PreparedStatement pstm = null;
ResultSet rs = null;
COB_Utils util = new COB_Utils();
try {
connPool = COB_ConexionModulo.instance();
rc = connPool.getConnection();
con = rc.getConexion();
if(!(con == null)){
sbQry = new StringBuffer("SELECT NAME FROM TEST.MYTABLE WHERE NAME = ?");
pstm = con.prepareStatement(sbQry.toString());
pstm.setString(1, "HELLOWORLD");
util.setInicioEjecucion();
rs = pstm.executeQuery();
util.imprimeTiempoEjecucion(MSINF,sbQry.toString());
while (rs.next()){
System.err.println(rs.getString("NAME"));
}
} else {
logger.info(MSINF + "No hay conexion");
}
} catch (Exception e) {
logger.error(MSERR + "Consulta()_" + e);
}finally {
try {if (con != null) {con.close();con = null;}} catch (SQLException sqle) {con = null;}
}
}
Images in order: 1.- Table Script 2.- Table Values 3.- Query Result.
무슨 일이 안 설명 (내가 SQL을 사용하여 재생하려고 할 때 실제로는하지 않습니다). 이 동작을 보여주기 위해 _complete_ minimal 예제를 작성하고 게시하고 DB2 버전 및 플랫폼을 언급 할 수 있습니다. Java 코드에서 오류가 의심됩니다. – mustaccio
어떤 JDBC 드라이버를 사용하고 있습니까? – mustaccio
com.ibm.as400.access.AS400JDBCDriver를 사용하고 있습니다. –