`

oracle sum null值相关 null 和 空字符串('')

阅读更多

组函数不计算null值

 


SELECT SUM(a) FROM ( SELECT 1 a FROM dual UNION SELECT 2 a FROM dual UNION SELECT 3 a FROM dual );

 结果是6

 

 

 

 

SELECT SUM(a) FROM (
  SELECT 1 a FROM dual
  UNION
  SELECT 2 a FROM dual
  UNION
  SELECT 3 a FROM dual
  UNION
  SELECT NULL a FROM dual
);

  结果还是6

 

 

 

例如:http://blog.itpub.net/23650854/viewspace-684335

select rownum,a from t_null;

    ROWNUM          A
---------- ----------
         1
         2
         3

z@test10gr2> select sum(a) from t_null;

    SUM(A)
----------

    NULL

 

select rownum,a from t_null;
    ROWNUM          A
---------- ----------
         1
         2
         3
         4         77

select sum(a) from t_null;
    SUM(A)
----------
        77

 

 

 

 

 

 

 

http://edgenhuang.iteye.com/blog/975567

 

-- oracle 将 空字符串即''当成null,测试脚本如下:

 

select nvl(null,-1) from dual;
select nvl('','-1') from dual;
select nvl(nvl(null,''),-1) from dual;

select nvl(trim('  '),'-1') from dual;

 

-- 但是要记住,null 与任何值做逻辑运算得结果都为 false,包括和null本身:

 

select nvl(max('1'),-1) from dual where null = '';
select nvl(max('1'),-1) from dual where null <> '';
select nvl(max('1'),-1) from dual where null = '-1';
select nvl(max('1'),-1) from dual where null <> '-1';

select nvl(max('1'),-1) from dual where null = null;
select nvl(max('1'),-1) from dual where null <> null;

 

-- 不过,用 is null 判断时,空字符串和 null 都 is null:

 

select nvl(max('1'),-1) from dual where '' is null;
select nvl(max('1'),-1) from dual where null is null;

 

--------------------------------------------------------------------------------------------------

 

-- 还要记住,null 和任何数值进行数学运算,结果都为 null:

 

select nvl(null + 0,-1) from dual;

 

-- 不过,可以使用 || 将空字符串或 null 和字符串连接

 

select 'a' || null || 'b' from dual; 

 

--------------------------------------------------------------------------------------------------

 

-- 另,作为以下的 Oracle 内置的函数的参数时,结果也为 null:
select nvl(length(null),-1) from dual;

select nvl(trim(null),-1) from dual;

select nvl(ltrim(null),'-1') from dual;
select nvl(rtrim(null),'-1') from dual;
select nvl(rtrim(null,' '),'-1') from dual;

select nvl(soundex(null),'-1') from dual;

select nvl(SubStr(null,1),-1) from dual;

select nvl(InStr(null,1),-1) from dual;

select nvl(replace(null,'a','b'),'-1') from dual;

 

select nvl(min(null),'-1') from dual;
select nvl(max(null),'-1') from dual;
select nvl(sum(null),'-1') from dual;
select nvl(avg(null),'-1') from dual;
select nvl(sum(null),'-1') from dual;

 

 

-- 不过,作为以下的 Oracle 内置的函数的参数时,结果不为null:

select concat('a', null) from dual;
select concat(null, 'a') from dual;


select count(null) from dual;

 

-- 其他函数用的时候,也可以使用以上的方法测试

分享到:
评论

相关推荐

    oracle中对null值的处理

    它不同于任何其他值,包括空字符串('')和零。理解Oracle如何处理NULL值是数据库管理与查询中的重要一环,尤其对于数据完整性、查询逻辑以及函数计算等方面。 1. NULL的定义: NULL不是代表“无”或“零”,而是...

    oracle中的null_考试题目

    `1`: 正确,因为`SUM`函数对于空集合返回`NULL`,这里计算的是一个`NULL`值。 - C. `NULL`: 错误。 - D. 报错: 错误。 #### 四、NULL与比较运算符 6. **IS NULL/IS NOT NULL**: 这些是专门用来判断列是否为`NULL...

    Oracle中的SUM用法讲解

    如示例中给出的`SumString`函数,它接收几个参数,包括表名、分组列名、结果列名、分组列值和分隔符,然后返回一个由指定列值连接成的字符串。 ```sql CREATE OR REPLACE FUNCTION SumString( i_TableName IN ...

    oracle常用字符函数

    - `LOWER(char)`: 该函数用于将输入的字符串`char`中的所有大写字母转换为小写字母,常用于不区分大小写的查询或比较。 - `UPPER(char)`: 与`LOWER`相反,它将字符串中的所有小写字母转换为大写字母。 - `INITCAP...

    如何将数据库中的NUll写入到数据库中去

    值得注意的是,NULL和空字符串是两个不同的概念。NULL表示未知或未定义,而空字符串则是一个实际存在的空值。在处理时,需要根据业务需求来决定使用哪一个。 7. NULL合并规则: 在查询时,涉及到NULL的比较和运算会...

    字符串(汉字)长度判断

    针对Oracle数据库中汉字在不通的字符集下所占字符长度不通,在保存时可能需要对源字符串的长度进行判断。 实现过程如下 /** * 针对汉字 进行计算长度 * @param string 计算的字符串 * @param ...

    oracle非数字合计,将字段中含有汉子的数据自动转换为 数字0

    这会导致后续的数据分析和汇总操作出现问题,因为Oracle默认情况下无法对包含非数字字符的字符串进行数值计算。 例如,在`table`表中有一个名为`column_name`的字段,该字段中可能存在诸如“一千”、“二万”这样的...

    oracle总结,PLSQL单行函数和组函数详解

    `CONCAT()`函数连接两个字符串,如果任一字符串为NULL,它将返回非NULL字符串。`INITCAP()`函数用于将字符串中每个单词的首字母大写,其余字母小写。`INSTR()`函数查找子字符串在主字符串中的位置,可以指定起始位置...

    oracle 函数

    `CONCAT()`函数用于连接两个字符串,如果任一字符串为NULL,它会返回另一个非NULL字符串。`INITCAP()`函数则会将字符串中的每个单词首字母大写,其余字母小写。`INSTR()`函数则查找字符串中子串的出现位置,支持指定...

    Oracle常用函数

    - **TO_CHAR和TO_DATE**:用于将数值转换为字符串,或将字符串转换为日期。 - **NVL和NVL2**:用于处理NULL值,NVL将NULL替换为指定的默认值,NVL2在第一个参数为NULL时返回第二个参数,否则返回第三个参数。 - **...

    oracle系统内置函数大全

    3. CONCAT函数:将两个字符串拼接起来,如果第一个字符串为NULL,则返回第二个字符串;如果第二个字符串为NULL,则返回第一个字符串。 4. INITCAP函数:将字符串中的每个单词的首字母转换为大写,其余字母转换为小写...

    oracle函数列表[定义].pdf

    例如,`COUNT(*)`返回表中的记录数,`SUM(column_name)`求列的总和,`AVG(column_name)`计算平均值,`MAX(column_name)`和`MIN(column_name)`找出最大值和最小值。组函数不能用于带有`WHERE`子句的列,除非使用了`...

    oracle 创建wm_concat函数

    在这个函数中,我们检查`sum_string`是否为空,如果不为空,则将新值附加到现有的字符串后面,并以逗号分隔;如果为空,则直接将新值赋值给`sum_string`。 3. **合并函数(ODCIAggregateMerge)**:当聚合操作在多个...

    oracle函数大全 oracle函数大全

    除了上述函数,Oracle还提供其他很多函数,如TO_DATE用于将字符串转换为日期,TO_CHAR用于将日期转换为字符串,NVL用于处理NULL值,以及COUNT、SUM、AVG、MAX、MIN等聚合函数。了解并熟练使用这些函数,能极大地提高...

    《Pro Oracle SQL》--Chapter 5--5.5 Questions about Data

    1. **NULL的概念**:NULL不是空字符串或者零,而是一个表示数据不存在或未知的特殊标记。在SQL中,每个字段都可能包含NULL,表明该字段没有被赋值。 2. **NULL的比较**:在SQL中,任何包含NULL的比较都会返回NULL,...

    oracle内置函数学习

    在字符串处理方面,Oracle有CONCAT()用于连接两个或更多字符串,SUBSTR()用于提取字符串的一部分,INSTR()查找子串在字符串中的位置,UPPER()和LOWER()则分别将字符串转换为大写和小写。还有REPLACE()函数可以替换...

    Oracle函数列表速查

    除了字符串函数,Oracle还提供了丰富的数学和日期函数,如: - **数学函数**:`ABS()`, `CEIL()`, `FLOOR()`, `MOD()`, `ROUND()`, `TRUNC()`等,用于基本数学运算和数值处理。 - **日期函数**:`ADD_MONTHS()`, `...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...

    ORACLE中的经典SQL及函数

    这些函数对字符串数据进行操作,包括`ASCII`和`CHR`用于ASCII码的转换,`CONCAT`用于连接两个字符串,`INITCAP`将每个单词的首字母转换为大写,其余字母小写,`INSTR`则用于查找子字符串在字符串中的位置。...

    oracle 10G函数大全

    在Oracle 10G中,函数是SQL和PL/SQL编程中不可或缺的一部分,它们用于处理数据、进行计算、操作字符串以及执行各种其他任务。本资料“Oracle 10G函数大全”显然是一份全面的参考指南,涵盖了Oracle 10G中的主要函数...

Global site tag (gtag.js) - Google Analytics