最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql中IFNULL,IF,CASE的區(qū)別介紹

 更新時間:2012年11月27日 09:03:34   作者:  
本文將詳細介紹mysql中IFNULL,IF,CASE的區(qū)別,需要了解的朋友可以參考下
假設有一數(shù)據表的狀態(tài)字段設計為varchar類型,有以下值:NULL,pending,pending refund,refund,cancel.
我們知道查詢狀態(tài)為cancel的訂單,SQL語句可以這樣寫:SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status = 'cancel'
SQL語句能查詢出正確的數(shù)據,但是當我們想查詢狀態(tài)為非cancel的訂單時,可能會出麻煩, 因為status字段沒 有設置NOT NULL,所以大部分訂單的status值都是NULL,這樣的話,用'<>'查詢出來的數(shù)據不正確,只有status除了cancel之外的非空數(shù)據查詢出來了,而為NULL的沒有查詢出來。SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE o.status <>'cancel'原 因:NULL值操作
NULL值可能令人感到奇怪直到你習慣它。概念上,NULL意味著“沒有值”或“未知值”,且它被看作與眾不同的值。為了測試NULL,你不能使用算術比較 操作符例如=、<或!=。為了說明它,試試下列查詢:mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
| NULL | NULL | NULL | NULL |
+----------+-----------+----------+----------+
很 顯然你不能通過這些比較得到有意義的結果。相反使用IS NULL和IS NOT NULL操作符:mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
| 0 | 1 |
+-----------+---------------+
請注意在MySQL中,0或 NULL意味著假,而其它值意味著真。布爾運算的默認真值是1。根據以上的NULL值操作結果,最終使用此種方式解決:SELECT o.oid,o.moneyreceipt,o.moneyget,o.thecurrency,o.status FROM qorder o WHERE IFNULL(o.status,'pending') <>'cancel'學習:IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否則它返回expr2。IFNULL()返回一個數(shù)字或字符串值,取決于它被使 用的上下文環(huán)境。
復制代碼 代碼如下:

mysql> select IFNULL(1,0); ->1
mysql> select IFNULL(0,10); ->0
mysql> select IFNULL(1/0,10); ->10.0000
mysql> select IFNULL(1/0,'yes'); ->'yes'IF(expr1,expr2,expr3)如果expr1是TRUE(expr1<>0且expr1<>NULL),那么IF()返回 expr2,否則它返回expr3。IF()返回一個數(shù)字或字符串值,取決于它被使用的上下文。
mysql> select IF(1>2,2,3); -> 3
mysql> select IF(1<2,'yes','no'); -> 'yes'

(1) CASE value WHEN [compare-value] THEN result [WHEN [compare-value] THEN result ...] [ELSE result] END //這個我還沒想到咋用,知道的可以留言交流,
(2) CASE WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END //這個面試時被人問到了,可以用作條件判斷
第(1)個返回 result,其中value=compare-value。第(2)個中如果第一個條件為真,返回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

上面的例子本人在mysql5.2.6上測試通過=====================================================================================PS:以上是轉載的內容,覺得很不錯就轉過來了,其中的CASE...WHEN...THEN、IF、IFNULL都是常用到的函數(shù)eg:SELECT id,username,CASE gender WHEN 1 THEN "男" WHEN 2 THEN "女" END FROM t_people; SELECT b.id,b.book_name,CASE b.type WHEN 1 THEN "計算機" WHEN 2 THEN "會計" ELSE "其它" END FROM book b;

相關文章

  • mysql設置遠程訪問數(shù)據庫的多種方法

    mysql設置遠程訪問數(shù)據庫的多種方法

    最近有一同學問我MySQL無法遠程訪問怎么呢,但能使用localhost來進行方法,下面腳本之家來給各位介紹一下解決辦法,需要的朋友可以參考下
    2013-10-10
  • Mysql使用簡單教程(二)

    Mysql使用簡單教程(二)

    這篇文章主要介紹了Mysql使用簡單教程(二)的相關資料,需要的朋友可以參考下
    2016-05-05
  • MySQL安裝starting?the?server失敗的2種解決辦法(推薦!)

    MySQL安裝starting?the?server失敗的2種解決辦法(推薦!)

    MySQL是一個非常強大的關系型數(shù)據庫,但有些初學者在安裝配置的時候,遇到種種的困難,下面這篇文章主要給大家介紹了關于MySQL安裝starting?the?server失敗的2種解決辦法,需要的朋友可以參考下
    2023-04-04
  • 定時備份mysql, 定時切割nginx access log的方法

    定時備份mysql, 定時切割nginx access log的方法

    定時備份mysql, 定時切割nginx access log的方法,需要的朋友可以參考下。
    2011-09-09
  • Mysql徹底解決中文亂碼問題的方案(Illegal mix of collations for operation)

    Mysql徹底解決中文亂碼問題的方案(Illegal mix of collations for operation)

    mysql數(shù)據庫和中文支持很不友好,經常見到“Illegal mix of collations for operation”錯誤,該如何解決呢?下面小編給大家?guī)砹薽ysql數(shù)據庫中涉及到哪些字符集及徹底解決中文亂碼的解決方案,非常不錯,一起看看吧
    2016-08-08
  • Mysql中group by 使用中發(fā)現(xiàn)的問題

    Mysql中group by 使用中發(fā)現(xiàn)的問題

    當使用MySQL的GROUP BY語句時,根據指定的列對結果進行分組,這種情況通常是由于在 GROUP BY 中選擇的字段與其他非聚合字段不兼容,或者在 SELECT 子句中沒有正確使用聚合函數(shù)所導致的,本文給大家介紹Mysql中group by 使用中發(fā)現(xiàn)的問題,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • mysql-connector-java.jar包的下載過程詳解

    mysql-connector-java.jar包的下載過程詳解

    這篇文章主要介紹了mysql-connector-java.jar包的下載過程詳解,mysql-connector-java.jar是java連接使用MySQL是必不可少的,感興趣的可以了解一下
    2020-07-07
  • mysql出現(xiàn)ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?on?‘localhost‘?(10061)的解決方法

    mysql出現(xiàn)ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?ser

    本文主要介紹了mysql出現(xiàn)ERROR?2003?(HY000):?Can‘t?connect?to?MySQL?server?on?‘localhost‘?(10061)的解決方法,具有一定的參考價值,感興趣的可以了解一下
    2025-03-03
  • sql跨表查詢的三種方案總結

    sql跨表查詢的三種方案總結

    這篇文章主要介紹了sql跨表查詢的三種方案總結,文章圍繞主題展開詳細的內容,具有一定的參考價值,需要的小伙伴可以參考一下,希望對你的學習有所幫助
    2022-08-08
  • MySQL?Online?DDL原理解析

    MySQL?Online?DDL原理解析

    MySQL原生OnlineDDL通過允許在表可用的情況下執(zhí)行DDL操作,大大提升了數(shù)據庫的可用性,通過不同的執(zhí)行算法,如COPY、INPLACE和INSTANT,它支持在線修改數(shù)據庫結構,優(yōu)化了數(shù)據庫維護流程,本文給大家介紹MySQL?Online?DDL原理,感興趣的朋友跟隨小編一起看看吧
    2024-10-10

最新評論

乌鲁木齐县| 景洪市| 武平县| 栾川县| 赤城县| 涪陵区| 赫章县| 五莲县| 沐川县| 黄大仙区| 晴隆县| 庄河市| 日照市| 唐河县| 阿克陶县| 沙雅县| 西安市| 曲沃县| 杂多县| 泸定县| 邓州市| 通州市| 云林县| 上思县| 大丰市| 左云县| 新宾| 青川县| 六安市| 江阴市| 陇南市| 若尔盖县| 凉城县| 德保县| 南通市| 玉林市| 壶关县| 涟源市| 定边县| 成武县| 临桂县|