【问题标题】:Oracle : can i specify * or any other option in WHERE clause to select whatever value it has?Oracle:我可以在 WHERE 子句中指定 * 或任何其他选项来选择它具有的任何值吗?
【发布时间】:2016-03-27 12:38:17
【问题描述】:

我是数据库新手。

我正在我的代码中动态创建 oracle 查询。如果这些列有价值,那么我没有问题。如果列具有“空”值,那么问题就来了。

例如,如果我必须在 oracle 中选择具有 NULL 值的列,

select * 
from <table> 
where "column_name" is NULL;

但我不想用是NULL,因为我是动态生成查询,查询的格式是

select * 
from <table> 
where "column_name" = NULL;

但这不起作用。因此,我可以写一些东西来代替 NULL,它会自动选择带有 NULL 选项的列或类似“*”的任何东西来选择该列中的任何值吗?

【问题讨论】:

  • 也许您应该将您的列声明为NOT NULL 并给它一个默认值。
  • 既然你是动态生成的,为什么当你不需要任何过滤器时你不能完全删除WHERE 子句

标签: sql oracle oracle11g oracle-sqldeveloper


【解决方案1】:

您可以使用NVL 来做到这一点:

select * from <table> where NVL("column_name",-99) = -99;

【讨论】:

  • 如果 column 是 varchar 数据类型怎么办。另外我认为他在问不同的事情(因为“动态”、“列”等词)。
  • 如果列是 varchar 怎么办?会有什么问题? @sql_dummy
  • 属性应该是相同的数据类型,或者我猜应该可以转换
  • 不管该列是什么数据类型,NVL 检查它是否为空,如果是则将其替换为 -99,并将其与 -99 进行比较。 @sql_dummy
  • 我也认为这个问题实际上是这样的“如果任何列有空值,则选择该行”(据我了解)
猜你喜欢
  • 2011-02-22
  • 2020-05-29
  • 2021-08-20
  • 2016-10-15
  • 1970-01-01
  • 1970-01-01
  • 2021-07-26
  • 1970-01-01
  • 2021-11-12
相关资源
最近更新 更多