- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
有什么方法可以选择记录中字段不为空或 NVL 空字段为“”的所有列?我在 ORACLE 上工作
像这样
SELECT * IS NOT NULL
FROM table
WHERE id_table ='001'
或者像这样
SELECT NVL(*,'')
FROM table
WHERE id_table ='001'
最佳答案
只需反转 NULL
关于 Find all columns having at least a NULL value from all tables in the schema 的演示逻辑.
例如,
FIND_NULL_COL
是一个简单的用户定义函数(UDF),它将为至少有一个 NULL
的列返回 1 值:
SQL> CREATE OR REPLACE
2 FUNCTION FIND_NULL_COL(
3 TABLE_NAME VARCHAR2,
4 COLUMN_NAME VARCHAR2)
5 RETURN NUMBER
6 IS
7 cnt NUMBER;
8 BEGIN
9 CNT :=1;
10 EXECUTE IMMEDIATE 'select count(1) from '
11 ||TABLE_NAME||' where ' ||COLUMN_NAME||' is not null
12 and deptno = 20' INTO cnt;
13 RETURN
14 CASE
15 WHEN CNT=0 THEN
16 1
17 ELSE
18 0
19 END;
20 END;
21 /
Function created.
调用SQL中的函数获取任意表所有列的NULL状态:
SQL> SET pagesize 1000
SQL> column owner format A10;
SQL> column column_name format A20;
SQL> COLUMN TABLE_NAME FORMAT A20;
SQL> column n format A1;
SQL> SELECT c.OWNER,
2 c.TABLE_NAME,
3 c.COLUMN_NAME,
4 C.NULLABLE,
5 FIND_NULL_COL(c.TABLE_NAME,c.COLUMN_NAME) null_status
6 FROM all_tab_columns c
7 WHERE C.OWNER =USER
8 AND c.TABLE_NAME = 'EMP'
9 ORDER BY C.OWNER,
10 C.TABLE_NAME,
11 C.COLUMN_ID
12 /
OWNER TABLE_NAME COLUMN_NAME N NULL_STATUS
---------- -------------------- -------------------- - -----------
SCOTT EMP EMPNO N 0
SCOTT EMP ENAME Y 0
SCOTT EMP JOB Y 0
SCOTT EMP MGR Y 0
SCOTT EMP HIREDATE Y 0
SCOTT EMP SAL Y 0
SCOTT EMP COMM Y 1
SCOTT EMP DEPTNO Y 0
8 rows selected.
SQL>
所以,NULL_STATUS
“1”是具有 NULL 值的列。
关于sql - 选择除 null 以外的所有列或 NVL 全部为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26064254/
有时我会在代码中看到一个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
我是一名优秀的程序员,十分优秀!