久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:4日期:2023-10-02 09:49:24
mysql返回Boolean類型

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

第一種情況,直接返回

select id=’22aa’ from mytest where age=202 返回1 可封裝為trueselect count(*)=1 from mytest where age=202 返回1 可封裝為trueselect count(*)=0 from mytest where age=202 返回0 可封裝為falseselect count(*)<3 from mytest where age=202 返回1 可封裝為trueselect count(*)<=1 from mytest where age=202 返回1 可封裝為trueselect 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 可封裝為trueselect count(*) from mytest 返回4 可封裝為Boolean類型,但為falseselect enable from mytest where age=201 返回null 不可封裝為Boolean類型,代碼會(huì)直接報(bào)錯(cuò)select id from mytest where age=202 返回’22aa’ 可封裝為Boolean類型,但為falseselect id from mytest where age=202 返回’true’ 可封裝為Boolean類型,但為trueselect 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: 4select * from mytest where age=202 返回一組數(shù)據(jù)false 2019-08-28 202 15 1 ,可以封裝為falseselect * from mytest where age=202 返回一組數(shù)據(jù)true 2019-08-28 202 15 1 ,可以封裝為trueselect * 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,該方法如下)

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

淺談mysql返回Boolean類型的幾種情況 至于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 setTime: 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 setTime: 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.deleted_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 message.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 where |

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: MySQL 數(shù)據(jù)庫(kù)
相關(guān)文章:
主站蜘蛛池模板: 一区二区三区四区在线 | 欧美精品色 | 激情小网站 | 免费观看一区二区三区毛片 | 成人午夜sm精品久久久久久久 | 香港黄色录像片 | 欧洲视频一区二区三区 | 亚洲精品美女久久久 | 中文字幕日韩欧美 | 日本 欧美 三级 高清 视频 | 欧美福利一区二区 | 大陆一级毛片免费视频观看 | 99视频网站 | 国产精品一区二区av | 国产视频一区二区 | 亚洲视频中文字幕 | 懂色一区二区三区免费观看 | 黄色天堂在线观看 | 精品国产一区二区三区在线观看 | 国产主播福利 | 精品欧美视频 | 黄色一级片在线看 | 欧美成人精品一区二区男人看 | 亚洲精品视频在线看 | 日韩综合网 | 亚洲欧洲一区二区 | 国产一级一级毛片女人精品 | a级毛片免费高清视频 | 台湾av在线 | 久久精品国产99国产 | 日韩成人免费av | 最新日韩av| 日韩国产 | 亚洲日韩成人 | 亚洲精品一区二三区不卡 | 97精品国产 | 91aiai| 最新国产在线 | 成人在线一区二区三区 | 日韩精品免费视频 | 毛片在线视频 |