我觉得我错过了一些非常明显的东西,但看起来这样做的唯一方法是获取值,然后查看它是否返回null(空)值,我宁愿不行。
SQL中是否有与List.contains(Object o)相同的东西?或许JDBC有这种性质的东西?如果是这样,它是什么?谢谢。
编辑: 我正在使用Microsoft Access 2013。
编辑2: 不幸的是,我没有任何有用的代码可以显示,但这里是我想要做的事情的要点。它根本不是什么独特的东西。我想有一个方法(Java)返回存储在数据库中的用户的值。如果先前未将用户添加到数据库,则应添加用户,并应设置用户的默认值。然后将返回这些新创建的值。如果播放器已经添加到数据库中(用户名作为主键),我不想覆盖已存在的数据。
编辑3: 我已经解决了这个问题!请参阅下面的答案。
答案 0 :(得分:2)
查看SQL表是否包含列上具有某些条件的行的唯一方法是实际进行SQL查询。我不明白你为什么不这样做。只需确保您在列上有一个索引,您将限制结果。另外,为了更好地使用count
来防止从行中检索所有数据。
SELECT count(*) FROM foos WHERE bar = 'baz'
假设您在bar
列上有一个索引,此查询应该非常快,您只需要检查它是否返回> 0.如果是,那么您的行符合您的标准。
答案 1 :(得分:1)
您可以使用“IF EXISTS
”,其返回boolean
1
或0
的值。
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();
}
这是一种非常简单且极其基本的方法,但希望它可能在将来帮助某人。 如果有任何问题,请告诉我。我不希望任何人学习或使用写得不好的代码。