日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql数据库int字段String条件查询

發(fā)布時間:2023/12/15 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql数据库int字段String条件查询 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

今天測試碰到個有趣的問題

很簡單一個請求

http://127.0.0.1:8080/driverinfomanagecs/selectDriverCarInfolistByPartyId?partyid=565613848

contrller里面也很簡單 就是一個mybatis的級聯(lián)查詢,查出的數(shù)據(jù)json返回

@RequestMapping("/selectDriverCarInfolistByPartyId")public ResponseVO<List<CarDriverInfo>> selectDriverCarInfolistByPartyId(String partyid) {if (StringUtils.isBlank(partyid)) {return ResponseVO.error("partyid不能為空");}Pattern pattern = Pattern.compile(PatternUtil.NUMBER);if(!pattern.matcher(partyid).matches()) {return ResponseVO.error("partyid格式不正確");}Integer partyId = Integer.parseInt(partyid);int count = driverInfoManageService.selectDriverCarInfoCountByPartyId(partyId);if(count < 1) {return ResponseVO.error("沒有查到該車隊(duì)信息");}List<CarDriverInfo> info = driverInfoManageService.selectDriverCarInfolistByPartyId(partyId);if (info == null) {return ResponseVO.error("沒有查到該車隊(duì)信息");} else {return ResponseVO.successWithData("查詢成功", info, count);}}

?

用Postman測試了一下好的,然后我再參數(shù)partyid后面又加了個1 變成?partyid=5656138481

再去測試發(fā)現(xiàn)報錯了?

報了個

Exception in thread "main" java.lang.NumberFormatException: For input string: "5656138481"

一看是數(shù)字啊 應(yīng)該對的 再一次 好像超出int的范圍了 然后觀察數(shù)據(jù)庫 發(fā)現(xiàn)

`partyId` int(19) NOT NULL

int(19) 的話 我用Long接收就好了?

?

把controller改成

@RequestMapping("/selectDriverCarInfolistByPartyId")public ResponseVO<List<CarDriverInfo>> selectDriverCarInfolistByPartyId(String partyid) {if (StringUtils.isBlank(partyid)) {return ResponseVO.error("partyid不能為空");}Pattern pattern = Pattern.compile(PatternUtil.NUMBER);if(!pattern.matcher(partyid).matches()) {return ResponseVO.error("partyid格式不正確");}Long partyId = Long.parseLong(partyid);int count = driverInfoManageService.selectDriverCarInfoCountByPartyId(partyId);if(count < 1) {return ResponseVO.error("沒有查到該車隊(duì)信息");}List<CarDriverInfo> info = driverInfoManageService.selectDriverCarInfolistByPartyId(partyId);if (info == null) {return ResponseVO.error("沒有查到該車隊(duì)信息");} else {return ResponseVO.successWithData("查詢成功", info, count);}}

ok 正常 參數(shù)加長也不報錯了

?

后來一想 為什么不直接改成用String接收呢

就把controller改成

@RequestMapping("/selectDriverCarInfolistByPartyId")public ResponseVO<List<CarDriverInfo>> selectDriverCarInfolistByPartyId(String partyid) {if (StringUtils.isBlank(partyid)) {return ResponseVO.error("partyid不能為空");}int count = driverInfoManageService.selectDriverCarInfoCountByPartyId(partyid);if(count < 1) {return ResponseVO.error("沒有查到該車隊(duì)信息");}List<CarDriverInfo> info = driverInfoManageService.selectDriverCarInfolistByPartyId(partyid);if (info == null) {return ResponseVO.error("沒有查到該車隊(duì)信息");} else {return ResponseVO.successWithData("查詢成功", info, count);}}

?

然后有趣的事情就發(fā)生了

?我把參數(shù)改成?partyid=565613848aaaaa 一樣能正常查到565613848的數(shù)據(jù) 改成?partyid=aaaaa565613848?就只能查到partyid=0的數(shù)據(jù) 一想 不會是mysql把我進(jìn)行了什么運(yùn)算吧

直接在數(shù)據(jù)庫試了試

結(jié)果如下

字母在后:

字母在前:

?

?

個人理解 mysql會從左到右開始讀取 一旦遇到非數(shù)字則視作后面的所有字符值為0 無論后面是否有數(shù)字
(565613848+0【aaabbb】)=565613848

(0【aaabbb565613848】)=0

保存一下 以防不測……

總結(jié)

以上是生活随笔為你收集整理的mysql数据库int字段String条件查询的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。