获取WHERE中的所有字段

时间:2014-08-11 06:14:39

标签: sql oracle

我正在使用oracle数据库。对于这个数据库,我必须编写一个过滤器。我正在WHERE sql子句中进行过滤。

但是,如果过滤器不完整,我想设置SELECT * FROM Person WHERE Name = '*'。这不起作用。是否有任何建议如何将WHERE clause设置为所有names而不将其删除?

感谢您的回答!

3 个答案:

答案 0 :(得分:2)

我解释'如何将WHERE子句设置为所有names而不将其排除在外' as'我希望字段名Name出现在WHERE子句中,但我想要所有记录。

... WHERE Name like '%' or Name is null

会返回所有行(我很确定like '%'也匹配空字符串)

过滤器的编码应动态排除或包含所选字段。换句话说:动态创建查询字符串,类似于

whereClause = '1=1';
foreach (filter in filterConditions) {
  if (!filter.IsEmpty) {
    whereClause += ' AND '+filter.SQLExpression
  }
}

抱歉,我不熟悉Java,但我希望你能明白这一点。当然,您仍然应该引入参数(在filter.SQLExpression中编码),而不是直接将过滤器值编码到SQLExpression中。

答案 1 :(得分:2)

您必须使用SELECT * FROM Person WHERE Name like '%'

SQL中,通配符为%,而不是asterix。和like是启用通配符搜索的运算符。

答案 2 :(得分:0)

如果Name列必须是在表格中搜索的唯一标准,请尝试以下方式:

SELECT * 
FROM Person 
WHERE Name IN ( select distinct Name --fetch distinct names 
                from Person ) --and then search through it