使用下面的Oracle查询通过Oracle命令参数获取数据。
从tbl_name中选择count(*(,其中col_name=:col_name
如果我将:col_name value作为"some value"传递,它将起作用并返回一些计数。如果:col_name为null,则它不起作用。因为where子句col_name=null不正确。相反,我们需要使用col_name为null。
如何从c#实现这一点,基于col_name值我需要使用正确的查询。
col_name="某个值":从tbl_name中选择count((,其中col_name=:col_name col_name=null:从tbl_name中选择计数((,其中col_name为null
如何在一个查询中实现这一点。如果col_name为null,则需要使用第二个where子句查询,否则需要使用第一个where子句。
提前感谢
您必须在查询中使用IS NULL
或IS NOT NULL
来选择或排除NULL值:
Select count(*) from tbl_name where col_name IS NULL
SQL语言以及所有使用它的数据库都使用3值逻辑。任何布尔表达式都返回True、False和NULL。与编程语言不同,NULL
不是一个特定的值。NULL
表示该值为UNKNOWN。也许是因为它丢失了,或者是因为没有可存储的有意义的价值。
如果将UNKNOWN值与另一个值进行比较,则结果不能是UNKNOWN以外的任何值。因此,如果一个值为NULL,那么结果也是NULL。如果name
为空,则name = NULL
和name != NULL
都将返回null,而不会返回True
或False
。
在筛选(即WHERE、HAVING(和JOIN中,NULL被视为False
,因此您的查询永远不会与NULL
值匹配。毕竟,您要求所有符合特定条件的行,其中一些行的答案是I don't know if this matches or not
。这些应该包括在结果中吗?I don't know
。该语言无法猜测,因此它要求程序员明确说明是否应包括未知结果
要在一行上实现这一点,
使用租赁业务
(***(?***:*****