- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
select NVL(B.SEQID, A.LVL5_ID) LVL6_ID, NVL(B.NAME, ' ') LVL6_NAME, A.LVL5_ID
FROM LVL5 A, ABC B WHERE A.LVL5_ID = B.LVL7
上面的查询定义了我系统中的 View 。这里我想知道为什么要使用NVL。
问题是 SEQID 是一个主键列,不能为空。那么这里需要NVL吗?
如果找不到满足 where 子句的记录,B.SEQID 可以为 null 吗?(我知道这没有意义,但我只是不得不问)
最佳答案
您的 nvl 函数所做的是用 A.LVL5_ID 的值替换它在 B.SEQID 中遇到的所有空值。
声明 B.SEQID 是主键会使此 NVL 在您的查询中无用,因为主键永远不能包含空值。然而,唯一键当然可以包含多个空值。
如果 where 子句没有任何匹配项,它不会返回空值,而是返回“未选择行”,这是一条反馈消息。
关于sql - NVL 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10241940/
有时我会在代码中看到一个nvl()函数。对于 Java,它看起来像这样: public static String nvl(String value, String alternateValue) {
我正在尝试分析由离职开发人员编写的现有 Oracle 查询。我不精通 Oracle,我对使用此 DECODE 有点困惑Microfocus COBOL 中的函数app(其中 :BV-POS_YEAR
我有此表,其中NULL是NULL值,而不是字符串NULL: MYCOL -------- NULL example 为什么此查询不返回NULL行? select * from example_so w
select nvl(trunc(null),trunc(sysdate)) from dual; 在执行上述查询时,我收到以下错误 ORA-00932: inconsistent datatypes
我们有一个在 NVL 语句中使用 case 的查询但是我认为可以删除 NVL 请引用以下查询部分 - select f1, NVL(( CASE WHEN PR
select NVL(B.SEQID, A.LVL5_ID) LVL6_ID, NVL(B.NAME, ' ') LVL6_NAME, A.LVL5_ID FROM LVL5 A, ABC B WH
尝试执行使用空参数值的 native SQL 查询时出现 Oracle 错误。我把它归结为这个测试用例: String SQL_SELECT = "select * fro
我有以下代码: SELECT cr_ts, msg_id, info FROM messaging_log WHERE UPPER(INFO) LIKE '%' || TRIM(UPPER(P_INF
我试图在我的数据库中传递一个空值作为其他东西,它似乎在没有这样的 Where 子句的情况下工作 select NVL(column1, '0') column1 from table1 产生这个
我正在做一些从 Oracle 到 MSSQL 的转换,我正在阅读 Oracle 在 B Supported SQL Syntax and Functions 上的指南. 我注意到有人说有一个 NOT
我在 SQL Server 上执行以下查询但出现错误: SELECT DISTINCT t1.p_id "Id", (TO_CHAR("sysdate", 'YYYY') + least(SIGN((
我有一个 Web 表单,允许用户根据传递到过程的参数搜索和编辑 Oracle 表中的记录。这是我的数据: CAE_SEC_ID SEC_CODE APPR_STATUS 1 A
有人知道为什么 Oracle 的 NVL (和 NVL2)函数总是计算第二个参数,即使第一个参数不是 NULL ? 简单测试: CREATE FUNCTION nvl_test RETURN NUMB
我有两个 Oracle 12c (12.1.0.2.0) 数据库,其中一个对于以下查询(使用 SQL Developer 3.2.20.10)返回 'ok',而另一个则返回 ORA-01722:无效数
我在 SQL Server 上执行以下查询但出现错误: SELECT DISTINCT t1.p_id "Id", (TO_CHAR("sysdate", 'YYYY') + least(SIGN((
我正在使用 Java 6 和 Oracle 10。我有一个 java 语句,我想测试 null 或空字符串。 我的代码如下所示: PreparedStatement stmt = null; Stri
一段时间以来,我一直想知道 DECODE 和 NVL 函数的内部工作是如何完成的。如果其中的参数数量更多,DECODE 函数是否会产生更多开销? 此外,NVL 函数是否评估给定的值而不是 NULL,即
我正在尝试运行以下查询: select a.*, case when NVL (SELECT max(b.field1) FROM b where b.fiel
oracle 有一个很好的内置函数,用于 if null,但是我想做 if = 0;有没有一种简单的方法可以做到这一点? nvl(instr(substr(ovrflo_adrs_info,instr
有了这个, set serveroutput on size 900000; DECLARE test VARCHAR(255):=0; BEGIN SELECT id INTO test
我是一名优秀的程序员,十分优秀!