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

淺談mysql返回Boolean類型的幾種情況

 更新時(shí)間:2021年06月04日 10:30:05   作者:海棠xun  
這篇文章主要介紹了mysql返回Boolean類型的幾種情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

mysql返回Boolean類型

在這里插入圖片描述

第一種情況,直接返回

select id='22aa' from mytest where age=202  返回1 可封裝為true
select count(*)=1 from mytest where age=202  返回1 可封裝為true
select count(*)=0 from mytest where age=202  返回0 可封裝為false
select count(*)<3 from mytest where age=202  返回1 可封裝為true
select count(*)<=1 from mytest where age=202  返回1 可封裝為true
select name="aa" from mytest where age=10  當(dāng)name為null時(shí),sql不會(huì)報(bào)錯(cuò),返回結(jié)果也為nul,參照第二種情況的sql 3 代碼會(huì)報(bào)錯(cuò)

總結(jié):

這種情況類似于java中的判斷語(yǔ)句。只是java中=是賦值的意思,所以用了==來(lái)做判斷,而mysql中賦值用set,判斷就直接用=。

第二種情況,返回0或者1也能達(dá)到目的

select enable from mytest where age=202  返回1  可封裝為true
select count(*) from mytest  返回4  可封裝為Boolean類型,但為false
select enable from mytest where age=201 返回null  不可封裝為Boolean類型,代碼會(huì)直接報(bào)錯(cuò)
select id from mytest where age=202   返回'22aa'   可封裝為Boolean類型,但為false
select id from mytest where age=202   返回'true'   可封裝為Boolean類型,但為true
select id from mytest where age=202   返回'false'   可封裝為Boolean類型,false
//特殊情況
select * from mytest  報(bào)錯(cuò)Expected one result (or null) to be returned by selectOne(), but found: 4
select * from mytest where age=202  返回一組數(shù)據(jù)false 2019-08-28 202 15 1 ,可以封裝為false
select * from mytest where age=202  返回一組數(shù)據(jù)true 2019-08-28 202 15 1 ,可以封裝為true
select * from mytest where age=202  返回一組數(shù)據(jù)aaaa2019-08-28 202 15 1 ,可以封裝為false

總結(jié):

Mybatis是根據(jù)查詢到的記錄數(shù)進(jìn)行轉(zhuǎn)換的(1=true,0=false)

需要注意的地方:如果查詢到多條記錄(大于1),返回的卻是false, 這時(shí)就與我們的期望的剛好相反。這里,可以換其它方法,可以通過(guò)返回記錄數(shù),進(jìn)行判斷,也可以保證記錄在數(shù)據(jù)庫(kù)是唯一的。也可以直接用第一種情況解決。

根據(jù)第4、5、6條sql語(yǔ)句的測(cè)試,如果字符串是"true",就可以封裝為true,如果為"false"就可以封裝為false,其他情的字符串都為false。

(猜測(cè),并不準(zhǔn)確,需要到mysql官網(wǎng)上來(lái)查,如果返回的字段是字符串,將其轉(zhuǎn)為Boolean時(shí)是按什么規(guī)則轉(zhuǎn)換的,猜測(cè)是類似于java中的字符串轉(zhuǎn)Boolean方法:Boolean.valueOf(“aaa”) //false,該方法如下)

在這里插入圖片描述

在這里插入圖片描述 至于8、9、10的sql返回一組,而接受數(shù)據(jù)的只要一個(gè)時(shí)的情況,為什么就取了id的值來(lái)封裝,有待繼續(xù)研究。

MySQL Boolean類型的坑

MySQL中,Boolean只是 tinyint(1) 的別名,也就是說(shuō),MySQL中并沒(méi)有真正的bool類型。而SQLAlchemy生成SQL的時(shí)候并沒(méi)有檢測(cè)到 這一點(diǎn),這就導(dǎo)致一個(gè)問(wèn)題,當(dāng)使用 bool 類型作為查詢條件時(shí),用不上索引,從而導(dǎo)致掃表的行為:

> SELECT COUNT(*) FROM message WHERE message.is_national = 1 AND message.updated_at > '2020-01-01 00:00:00' AND message.deleted_at IS NULL;
+----------+
| COUNT(*) |
+----------+
| 0        |
+----------+
1 row in set
Time: 0.018s
> SELECT COUNT(*) FROM message WHERE message.is_national is true AND message.updated_at > '2020-01-01 00:00:00' AND message.deleted_at IS NULL;
+----------+
| COUNT(*) |
+----------+
| 0        |
+----------+
1 row in set
Time: 2.162s

注意觀察第一行和第二行的時(shí)間,很明顯第二行沒(méi)有用上索引,我們來(lái)看看 EXPLAIN 的結(jié)果便知道了:

> EXPLAIN SELECT COUNT(*) FROM message WHERE message.is_national = 1 AND message.updated_at > '2020-01-01 00:00:00' AND message.de
        leted_at IS NULL;
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
| 1  | SIMPLE | message | ref  | ix_message_updated_at,idx_updated_at_is_national,ix_message_is_national | ix_message_is_national | 1 | const | 1 | Using where |

> EXPLAIN SELECT COUNT(*) FROM message WHERE message.is_national is true AND message.updated_at > '2020-01-01 00:00:00' AND messag
        e.deleted_at IS NULL;
| id | select_type | table   | type | possible_keys | key    | key_len | ref    | rows    | Extra |
| 1  | SIMPLE | message | ALL  | ix_message_updated_at,idx_updated_at_is_national | <null> | <null>  | <null> | 一個(gè)很大的數(shù)字 | Using whe
re |

對(duì)此,我只想說(shuō),太坑了!

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談mysql執(zhí)行過(guò)程以及順序

    淺談mysql執(zhí)行過(guò)程以及順序

    這篇文章主要介紹了淺談mysql執(zhí)行過(guò)程以及順序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • mysql高效查詢left join和group by(加索引)

    mysql高效查詢left join和group by(加索引)

    這篇文章主要給大家介紹了關(guān)于mysql高效查詢left join和group by,這個(gè)的前提是加了索引,以及如何在MySQL高效的join3個(gè)表 的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • mysql導(dǎo)入sql文件命令和mysql遠(yuǎn)程登陸使用詳解

    mysql導(dǎo)入sql文件命令和mysql遠(yuǎn)程登陸使用詳解

    這篇文章主要介紹了mysql導(dǎo)入sql文件命令和mysql遠(yuǎn)程登陸使用詳解,需要的朋友可以參考下
    2014-04-04
  • mysql如何按字段查詢重復(fù)的數(shù)據(jù)

    mysql如何按字段查詢重復(fù)的數(shù)據(jù)

    這篇文章主要介紹了mysql如何按字段查詢重復(fù)的數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • MySQL慢查詢的坑

    MySQL慢查詢的坑

    這篇文章主要介紹了MySQL慢查詢的坑,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • CentOS7安裝MySQL8的超級(jí)詳細(xì)教程(無(wú)坑!)

    CentOS7安裝MySQL8的超級(jí)詳細(xì)教程(無(wú)坑!)

    我們?cè)贚inux系統(tǒng)中,如果要使用關(guān)系型數(shù)據(jù)庫(kù)的話,基本都是用的mysql,這篇文章主要給大家介紹了關(guān)于CentOS7安裝MySQL8的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • MySQL?數(shù)據(jù)庫(kù)的對(duì)庫(kù)的操作及其數(shù)據(jù)類型

    MySQL?數(shù)據(jù)庫(kù)的對(duì)庫(kù)的操作及其數(shù)據(jù)類型

    這篇文章主要介紹了MySQL?數(shù)據(jù)庫(kù)的對(duì)庫(kù)的操作及其數(shù)據(jù)類型,下面文字圍繞數(shù)據(jù)庫(kù)的對(duì)庫(kù)的操作及其數(shù)據(jù)類型的相關(guān)資料展開(kāi)詳細(xì)介紹,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2021-12-12
  • MySql數(shù)據(jù)庫(kù)之a(chǎn)lter表的SQL語(yǔ)句集合

    MySql數(shù)據(jù)庫(kù)之a(chǎn)lter表的SQL語(yǔ)句集合

    mysql之a(chǎn)lter表的SQL語(yǔ)句集合,包括增加、修改、刪除字段,重命名表,添加、刪除主鍵等。本文給大家介紹MySql數(shù)據(jù)庫(kù)之a(chǎn)lter表的SQL語(yǔ)句集合,感興趣的朋友一起學(xué)習(xí)吧
    2016-04-04
  • MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL

    MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL

    這可能是困然很多人的一個(gè)問(wèn)題,MySQL通過(guò)慢查詢?nèi)罩径ㄎ荒切﹫?zhí)行效率較低的SQL語(yǔ)句,下面這篇文章主要給大家介紹了關(guān)于MySQL實(shí)戰(zhàn)記錄之如何快速定位慢SQL的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • MySQL ERROR 2013 (HY000)錯(cuò)誤解決方法

    MySQL ERROR 2013 (HY000)錯(cuò)誤解決方法

    這篇文章主要介紹了MySQL ERROR 2013 (HY000)錯(cuò)誤解決方法,錯(cuò)誤提示全文ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 104,需要的朋友可以參考下
    2015-01-01

最新評(píng)論

新平| 肇州县| 阿拉尔市| 瑞丽市| 尼勒克县| 南昌市| 贵阳市| 蓬安县| 芒康县| 海兴县| 邵东县| 正阳县| 平湖市| 江西省| 蓝山县| 江口县| 阿图什市| 中西区| 壶关县| 特克斯县| 云南省| 宝丰县| 吉水县| 安庆市| 海门市| 轮台县| 铜川市| 偃师市| 石阡县| 太谷县| 太白县| 平陆县| 南昌县| 巫溪县| 中宁县| 安丘市| 南和县| 江阴市| 通州区| 元阳县| 睢宁县|