如何确定表中是否包含SQL值?

时间:2013-12-28 16:51:14

标签: java sql ms-access jdbc ms-access-2013

我觉得我错过了一些非常明显的东西,但看起来这样做的唯一方法是获取值,然后查看它是否返回null(空)值,我宁愿不行。

SQL中是否有与List.contains(Object o)相同的东西?或许JDBC有这种性质的东西?如果是这样,它是什么?谢谢。

编辑: 我正在使用Microsoft Access 2013。

编辑2: 不幸的是,我没有任何有用的代码可以显示,但这里是我想要做的事情的要点。它根本不是什么独特的东西。我想有一个方法(Java)返回存储在数据库中的用户的值。如果先前未将用户添加到数据库,则应添加用户,并应设置用户的默认值。然后将返回这些新创建的值。如果播放器已经添加到数据库中(用户名作为主键),我不想覆盖已存在的数据。

编辑3: 我已经解决了这个问题!请参阅下面的答案。

5 个答案:

答案 0 :(得分:2)

查看SQL表是否包含列上具有某些条件的行的唯一方法是实际进行SQL查询。我不明白你为什么不这样做。只需确保您在列上有一个索引,您将限制结果。另外,为了更好地使用count来防止从行中检索所有数据。

SELECT count(*) FROM foos WHERE bar = 'baz'

假设您在bar列上有一个索引,此查询应该非常快,您只需要检查它是否返回> 0.如果是,那么您的行符合您的标准。

答案 1 :(得分:1)

您可以使用“IF EXISTS”,其返回boolean 10的值。

select
  if(
    exists( select * from date1 where current_date()>now() ),
    'today > now',
    'today is not > now' 
  ) as 'today > now ?' ;

+--------------------+
| today > now?       |
+--------------------+
| today is not > now |
+--------------------+
1 row in set (0.00 sec)

另一个例子

SELECT IF( 
         EXISTS( SELECT col from tbl where id='n' ),
         colX, colY 
       ) AS 'result'
FROM TBL;

答案 2 :(得分:1)

我也是sql的新手,我正在使用Oracle。

在Oracle中,假设我们有:TYPE:value。

我们可以使用:

where value not in (select TYPE from table)

确保不存在于表的TYPE列中。

不知道是否有帮助。

答案 3 :(得分:0)

您可以简单地使用条件查询。

例如,如果您必须使用特定的coloumn检查记录,则可以使用where条件

select * from table where column1 = 'checkvalue'

您可以使用count属性来检查否。记录条件存在的记录

select count(*) from table where column1 = 'checkvalue'

答案 4 :(得分:0)

我创建了以下方法,据我所知,这种方法非常有效。 (使用java.sql包)

public static containsUser(String username)
{
    //connection is the Connection object used to connect to my Access database.
    Statement statement = this.connection.createStatement();
    //"Users" is the name of the table, "Username" is the primary key.
    String sql = "SELECT * FROM Users WHERE Username = '" + username + "'";
    Result result = statement.executeQuery(sql);
    //There is no need for a loop because the primary key is unique.
    return result.next();
}

这是一种非常简单且极其基本的方法,但希望它可能在将来帮助某人。 如果有任何问题,请告诉我。我不希望任何人学习或使用写得不好的代码。