组函数不计算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值是数据库管理与查询中的重要一环,尤其对于数据完整性、查询逻辑以及函数计算等方面。 1. NULL的定义: NULL不是代表“无”或“零”,而是...
`1`: 正确,因为`SUM`函数对于空集合返回`NULL`,这里计算的是一个`NULL`值。 - C. `NULL`: 错误。 - D. 报错: 错误。 #### 四、NULL与比较运算符 6. **IS NULL/IS NOT NULL**: 这些是专门用来判断列是否为`NULL...
如示例中给出的`SumString`函数,它接收几个参数,包括表名、分组列名、结果列名、分组列值和分隔符,然后返回一个由指定列值连接成的字符串。 ```sql CREATE OR REPLACE FUNCTION SumString( i_TableName IN ...
- `LOWER(char)`: 该函数用于将输入的字符串`char`中的所有大写字母转换为小写字母,常用于不区分大小写的查询或比较。 - `UPPER(char)`: 与`LOWER`相反,它将字符串中的所有小写字母转换为大写字母。 - `INITCAP...
值得注意的是,NULL和空字符串是两个不同的概念。NULL表示未知或未定义,而空字符串则是一个实际存在的空值。在处理时,需要根据业务需求来决定使用哪一个。 7. NULL合并规则: 在查询时,涉及到NULL的比较和运算会...
针对Oracle数据库中汉字在不通的字符集下所占字符长度不通,在保存时可能需要对源字符串的长度进行判断。 实现过程如下 /** * 针对汉字 进行计算长度 * @param string 计算的字符串 * @param ...
这会导致后续的数据分析和汇总操作出现问题,因为Oracle默认情况下无法对包含非数字字符的字符串进行数值计算。 例如,在`table`表中有一个名为`column_name`的字段,该字段中可能存在诸如“一千”、“二万”这样的...
`CONCAT()`函数连接两个字符串,如果任一字符串为NULL,它将返回非NULL字符串。`INITCAP()`函数用于将字符串中每个单词的首字母大写,其余字母小写。`INSTR()`函数查找子字符串在主字符串中的位置,可以指定起始位置...
`CONCAT()`函数用于连接两个字符串,如果任一字符串为NULL,它会返回另一个非NULL字符串。`INITCAP()`函数则会将字符串中的每个单词首字母大写,其余字母小写。`INSTR()`函数则查找字符串中子串的出现位置,支持指定...
- **TO_CHAR和TO_DATE**:用于将数值转换为字符串,或将字符串转换为日期。 - **NVL和NVL2**:用于处理NULL值,NVL将NULL替换为指定的默认值,NVL2在第一个参数为NULL时返回第二个参数,否则返回第三个参数。 - **...
3. CONCAT函数:将两个字符串拼接起来,如果第一个字符串为NULL,则返回第二个字符串;如果第二个字符串为NULL,则返回第一个字符串。 4. INITCAP函数:将字符串中的每个单词的首字母转换为大写,其余字母转换为小写...
例如,`COUNT(*)`返回表中的记录数,`SUM(column_name)`求列的总和,`AVG(column_name)`计算平均值,`MAX(column_name)`和`MIN(column_name)`找出最大值和最小值。组函数不能用于带有`WHERE`子句的列,除非使用了`...
在这个函数中,我们检查`sum_string`是否为空,如果不为空,则将新值附加到现有的字符串后面,并以逗号分隔;如果为空,则直接将新值赋值给`sum_string`。 3. **合并函数(ODCIAggregateMerge)**:当聚合操作在多个...
除了上述函数,Oracle还提供其他很多函数,如TO_DATE用于将字符串转换为日期,TO_CHAR用于将日期转换为字符串,NVL用于处理NULL值,以及COUNT、SUM、AVG、MAX、MIN等聚合函数。了解并熟练使用这些函数,能极大地提高...
1. **NULL的概念**:NULL不是空字符串或者零,而是一个表示数据不存在或未知的特殊标记。在SQL中,每个字段都可能包含NULL,表明该字段没有被赋值。 2. **NULL的比较**:在SQL中,任何包含NULL的比较都会返回NULL,...
在字符串处理方面,Oracle有CONCAT()用于连接两个或更多字符串,SUBSTR()用于提取字符串的一部分,INSTR()查找子串在字符串中的位置,UPPER()和LOWER()则分别将字符串转换为大写和小写。还有REPLACE()函数可以替换...
除了字符串函数,Oracle还提供了丰富的数学和日期函数,如: - **数学函数**:`ABS()`, `CEIL()`, `FLOOR()`, `MOD()`, `ROUND()`, `TRUNC()`等,用于基本数学运算和数值处理。 - **日期函数**:`ADD_MONTHS()`, `...
varchar2 1~4000字节 可变长度字符串,与CHAR类型相比,使用VARCHAR2可以节省磁盘空间,但查询效率没有char类型高 数值类型 Number(m,n) m(1~38) n(-84~127) 可以存储正数、负数、零、定点数和精度为38位的浮点数...
这些函数对字符串数据进行操作,包括`ASCII`和`CHR`用于ASCII码的转换,`CONCAT`用于连接两个字符串,`INITCAP`将每个单词的首字母转换为大写,其余字母小写,`INSTR`则用于查找子字符串在字符串中的位置。...
在Oracle 10G中,函数是SQL和PL/SQL编程中不可或缺的一部分,它们用于处理数据、进行计算、操作字符串以及执行各种其他任务。本资料“Oracle 10G函数大全”显然是一份全面的参考指南,涵盖了Oracle 10G中的主要函数...