`
sllizhimei
  • 浏览: 165595 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

MySQL对null的处理,Oracle里NVl的实现方法

阅读更多
CREATE TABLE `tmp` (  
  `id` int(11) DEFAULT NULL,  
  `txt` varchar(20) DEFAULT NULL 
) ;  
 
insert into tmp values(22,null);  
 
-- 用 case when 实现  
select case when txt is null then  '' else txt end from tmp ;  
 
-- 用 ifnull 实现  
select ifnull(txt,'ab') from tmp; 

详情如下:
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
mysql> select IFNULL(1,0);
-> 1
mysql> select IFNULL(0,10);
-> 0
mysql> select IFNULL(1/0,10);
-> 10
mysql> select IFNULL(1/0,'yes');
-> 'yes'

IF(expr1,expr2,expr3)
如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回expr2,否则它返回expr3。IF()返回一个数字或字符串值,取决于它被使用的上下文。
mysql> select IF(1>2,2,3);
-> 3
mysql> select IF(1<2,'yes','no');
-> 'yes'
mysql> select IF(strcmp('test','test1'),'yes','no');
-> 'no'

expr1作为整数值被计算,它意味着如果你正在测试浮点或字符串值,你应该使用一个比较操作来做。

mysql> select IF(0.1,1,0);
-> 0
mysql> select IF(0.1<>0,1,0);
-> 1

在上面的第一种情况中,IF(0.1)返回0,因为0.1被变换到整数值, 导致测试IF(0)。这可能不是你期望的。在第二种情况中,比较测试原来的浮点值看它是否是非零,比较的结果被用作一个整数。

CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END

CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END
第一个版本返回result,其中value=compare-value。第二个版本中如果第一个条件为真,返回result。如果没有匹配的result值,那么结果在ELSE后的result被返回。如果没有ELSE部分,那么NULL被返回。
mysql> SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "more" END;
-> "one"
mysql> SELECT CASE WHEN 1>0 THEN "true" ELSE "false" END;
-> "true"
mysql> SELECT CASE BINARY "B" when "a" then 1 when "b" then 2 END;
-> NULL


文章出自:http://hi.baidu.com/phpidea/blog/item/6786d4874e054320c65cc3b2.html
分享到:
评论

相关推荐

    浅谈mysql可有类似oracle的nvl的函数

    ifnull等同于oracle的nvl,用法如下 mysql&gt; select ifnull(1,10); +————–+ | ifnull(1,10) | +————–+ | 1 | +————–+ 1 row in set (0.00 sec) mysql&gt; select ifnull(null,10); +—————–+ | ...

    mysql转oracle要注意的几项

    在Oracle中,`NVL`函数被广泛用来将NULL值转换为指定的默认值,这与MySQL中的处理方式类似。例如: ```sql NVL(列名, 0) ``` 这会将`列名`中的任何NULL值替换为0,确保在进行数学运算或比较时不会出现问题。此外,...

    mysql与oracle差异总结

    MySql 中的 NULLIF 函数相当于 Oracle 中的 NVL 函数。MySql 中的 CASE WHEN 语句可以替换 DECODE 函数。MySql 中的 TEXT 等同于 Oracle 中的 LONG 函数。 13. 日期函数 MySql 中的 EXTRACT 函数可以提取日期的年...

    oracle和MySQL区别手册

    - **Oracle**: 使用`NVL()`函数处理`NULL`值。例如`NVL(u.email_address, 'default_value')`会在`email_address`为`NULL`时返回默认值。 - **MySQL**: 使用`IFNULL()`函数处理`NULL`值。例如`IFNULL(u.email_...

    SQL Server、Oracle和MySQL判断NULL的方法

    总结来说,SQL Server的`ISNULL()`,Oracle的`NVL()`和MySQL的`IFNULL()`都是为了处理和处理NULL值而设计的,它们在数据库查询和更新中扮演着关键角色,确保数据的完整性和一致性。了解并熟练运用这些函数对于数据库...

    Oracle与Mysql差异说明.doc

    1. NVL 和 IFNULL:在 Oracle 中,NVL 函数用于将 NULL 值替换为指定的默认值,而在 MySQL 中,对应的函数是 IFNULL。 2. SYSDATE 和 NOW():Oracle 使用 SYSDATE 获取当前系统日期和时间,而 MySQL 使用 NOW() ...

    Oracle与MySQL的几点区别.docx

    例如,在 Oracle 中,需要使用 NVL 函数将 NULL 替换为其他值,而在 MySQL 中可以使用 IFNULL 或 COALESCE。 以上只是 Oracle 和 MySQL 之间一些基本的差异,实际应用中还有更多细节需要注意,如索引、事务处理、...

    关于sql中求平均值出现null值的解决方案

    5. 使用`NVL2`函数(在Oracle中):此函数会根据给定条件返回两个参数中的一个,如果第一个参数为null,则返回第二个参数,否则返回第一个参数。例如: ```sql SELECT AVG(NVL2(column_name, column_name, 0)) ...

    Oracle数据库、SQL

    - **NVL函数** 用来处理NULL值,如 `NVL(column, default_value)`,当column为NULL时,返回default_value。 - **拼接运算符** `||` 用于连接两个字符串。 - **消除重复行** 使用`DISTINCT`关键字去除重复行。 3....

    Oracle.pdf

    ### Oracle与MySQL对比 #### 开源与收费的区别 - **MySQL**:作为一款开源数据库管理系统,MySQL因其灵活性和较低的成本而被广泛应用于中小型企业。例如,像淘宝这样的电商平台选择使用MySQL集群来支持其业务需求...

    oracle学习文档

    - **远程连接Oracle**: 可以通过网络工具实现对Oracle数据库的远程管理。 - **SqlDeveloper客户端连接**: Oracle提供的图形化工具,方便用户连接和管理Oracle数据库。 - **使用PL/SQL Developer**: 第三方工具,广泛...

    oracle函数经典

    例如,`REPLACE('OracleDatabase', 'Oracle', 'MySQL')` 返回 'MySQLDatabase'。 二、日期与时间函数 1. **SYSDATE**: 返回当前系统的日期和时间。 2. **ADD_MONTHS()**: 在日期上添加指定的月数。例如,`ADD_...

    MySQL中对于NULL值的理解和使用教程

    处理NULL值时,MySQL提供了`IFNULL()`函数,它类似于Oracle的`NVL()`函数。`IFNULL(expr1, expr2)`会检查`expr1`,如果它不是NULL,则返回`expr1`的值,否则返回`expr2`的值。这在需要避免因NULL值导致的问题时非常...

    ORACLE_SID数据库相关资料.docx

    在处理包含空值的计算时,需要使用空值转换函数,如Oracle专用的`NVL`函数,或通用的`COALESCE`函数,它们用于将NULL转换为指定的非NULL值。 8. 拼接运算符`||`:用于将多个字段的值连接成一个字符串。字符串应该用...

    02_oracle学习笔记第一天

    - **分组函数与 null**:分组函数默认忽略 null 值,可以通过 `nvl()` 函数处理。 #### 六、过滤与条件查询 - **比较运算符**:`=`, `&gt;`, `, `&gt;=`, `, `&lt;&gt;`(也可写作 `!=`)。 - **BETWEEN AND**:用于指定范围内...

    SQL NULL 函数

    MySQL数据库提供了两种处理NULL的方法:IFNULL()函数和COALESCE()函数。IFNULL()函数与ISNULL()类似,但它的语法更简单,直接接受两个参数,如果第一个参数为NULL,就返回第二个参数的值: ```sql SELECT ...

    Oracle学习笔记_(PDF版)

    - 空值处理:`IS NULL` 或 `IS NOT NULL` - 使用 `IN` 或 `NOT IN` 来选取符合特定条件的数据 - 匹配字符使用通配符 `%`:`LIKE '%模式%'`;如果模式中含有 `%`,则需使用转义字符 `\`。 - **ORDER BY子句**: - ...

    超详细Oracle教程

    - **Oracle与SUN合并的战略意义**:2009年Oracle收购SUN,这一举动不仅加强了Oracle在数据库领域的领导地位,还为其带来了SUN的强大硬件支持,包括服务器资源及开源数据库MySQL。此次合并有助于Oracle拓展市场,特别...

    我的oracle学习笔记

    - **MySQL (Oracle)**:一款开源的关系型数据库管理系统,因其性能稳定、易于使用等特点而受到广大用户的喜爱,现隶属于Oracle公司。 - **Access**:微软办公软件套件中的关系型数据库管理系统,适合小型应用环境。 ...

Global site tag (gtag.js) - Google Analytics