选择特定字段不为NULL的所有记录

时间:2017-03-10 08:35:55

标签: java mysql select prepared-statement notnull

我有一个名为mapreduce.task.io.sort.mb的{​​{1}}表,其中一个字段为MySQL,默认值为stars。我想通过中的id_num选择NULL id_num的所有记录。

现在我正在尝试这个:

NULL

但它不起作用。

4 个答案:

答案 0 :(得分:2)

public class Test implements Serializable {
    private static final long serialVersionUID = -7788619177798333712L;
    private String name;
    private User user;

    public Test( String name ) {
        this.name = name;
    }

    public Test( String name, User user ) {
        this( name );
        this.user = user;
    }

    public String getName() {
        return name;
    }

    public User getUser() {
        return user;
    }

    public void setName( String name ) {
        this.name = name;
    }

    public void setUser( User user ) {
        this.user = user;
    }

    public String toString() {

        StringBuilder sb = new StringBuilder( "[ " );
        sb.append( "name: " ).append(this.name).append( ", " );
        sb.append( user.toString() ).append( " ]" );

        return sb.toString();
    }
}

你不需要private final String idStarsSQL = "select * from `stars` where id_num is not NULL";

从我的角度来看,PreparedStatement应该用于带参数的SQL语句。使用带参数的SQL语句的优点是,您可以使用相同的语句,并在每次执行时为其提供不同的值。

PreparedStatement

答案 1 :(得分:1)

因为null不是值,所以它更多是SQL中的关键字,所以你必须将它硬编码到你的sql语句中

private final String idStarsSQL = "select * from `stars` where id_num is not NULL";

答案 2 :(得分:1)

您可以使用:

PreparedStatement preparedStatement = 
            connection.prepareStatement("select * from `stars` where id_num is not NULL");
ResultSet result = preparedStatement.executeQuery();

while (result.next()) {
    result.getString("attribute1");
    result.getString("attribute2");
}

您可以在此处了解有关Sample Html EditorPreparedStatement

的更多信息

答案 3 :(得分:0)

preparedStatement的主要功能是将参数插入到SQL语句中,在你的情况下你不需要这样做,因为null不是一个参数,所以你可以清楚地做到:

PreparedStatement myRequest= 
            connection.prepareStatement("select * from `stars` where id_num is not NULL");
ResultSet myResult= preparedStatement.executeQuery();