淺談MySQL查詢出的值為NULL和N/A和空值的區(qū)別
例子表
CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `book_name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `author` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `publisher` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE, FULLTEXT INDEX `bookname_author_publisher_fulltext`(`book_name`, `author`, `publisher`) WITH PARSER `ngram` ) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
插入幾條數據
區(qū)別
在MySQL中,NULL,N/A,空值是完全的三種東西,首先展示一下它們的表現形式
N/A的展示形式
當我使用select * from book where id = 561656 進行查詢的時候,很明顯,數據庫不存在這樣的數據,注意,我說的是不存在,現在我們查看結果
可以看到所有的列都為N/A,也就是不存在這樣的結果,映射到Java上什么都沒有,是的,完全映射不上,要是以對象接收這一列的結果,那么這個對象就是NULL,沒有指向任何地方。要是以List接收結果,也是映射不上,List的size為0
NULL的展示形式
NULL就是NULL,字面意思,在列中存NULL,列映射到Java屬性中也是NULL
搜索NULL以 is null 進行搜索
空值的展示形式
空值就是空串,存儲的也是空串,映射到Java中也是""(空串),啥也沒有,但是就是字符串
搜索這樣的結果以 = ‘’ 進行搜索(和搜索字符串一樣,等于空串)
TIPS
- 另外,在寫sql語句時這些值的不同也可能導致結果不同
- 如果你定義了一個局部變量,搜索一個N/A的結果賦值給該變量,那么結果是該變量沒有任何改變,不會對該變量做任何賦值操作
- 如果你定義了一個局部變量,搜索一個NULL的結果賦值給該變量,那么結果是該變量的值也會被更新為NULL
到此這篇關于淺談MySQL查詢出的值為NULL和N/A和空值的區(qū)別的文章就介紹到這了,更多相關MySQL查詢值為NULL和N/A和空值內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
一文搞懂Mysql中的共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場景
剛開始學習MySQL中鎖的時候,網上一查出來一堆,什么表鎖、行鎖、讀鎖、寫鎖、悲觀鎖、樂觀鎖等等等,直接整個人就懵了,下面這篇文章主要給大家介紹了關于Mysql中共享鎖、排他鎖、悲觀鎖、樂觀鎖及使用場景的相關資料,需要的朋友可以參考下2022-07-07MySQL Aborted connection告警日志的分析
這篇文章主要介紹了MySQL Aborted connection告警日志的分析,幫助大家更好的理解和學習MySQL,感興趣的朋友可以了解下2020-08-08