亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Java中字符串截取String.subString();

Java中字符串截取String.subString();

開心每一天1111 2019-03-13 14:15:52
數據庫中字段為:comment varchar(1300) DEFAULT NULL COMMENT '備注信息',我現在為了保證insert語句插入表中的這個字段的時候,不會出現拋出異常的情況。我要對于String,截取到varchar(1300)范圍的數據。這個1300有多大范圍?怎么來弄??
查看完整描述

4 回答

?
largeQ

TA貢獻2039條經驗 獲得超8個贊

您好,沒記錯的話,mysql以4.1版本為界限,之前的varchar以字節計算大小,之后的varchar以字符計算大?。ㄒ粋€漢字也計算為1)。

類似的,在Java中,字符串的長度也是字符相關的,如:


// 輸出字符個數為4

System.out.println("你好hi".length());

因此如果你要將字符串結為1300長度,只需要如下代碼:


String origin = "這是原始的字符串,bala bala bala";

// 如果長度大于1300,就截取, 否則使用全部字符

String newStr = origin.substring(0, origin.length() > 1300 ? 1300 : origin.length());

System.out.println(newStr);


查看完整回答
反對 回復 2019-04-25
?
慕雪6442864

TA貢獻1812條經驗 獲得超5個贊

1300表示字符。
Java: "1300len...".length()大于1300時會出現Data too long...
可以將數據庫字段改短一時,寫點數據試一下就明了了。

查看完整回答
反對 回復 2019-04-25
?
心有法竹

TA貢獻1866條經驗 獲得超5個贊

這個要看你用的什么數據庫,我看你標簽是mysql,所以此處以mysql為例。

在4.0以前

varchar(n)中的n表示字節數,即需要自行計算。這和你使用的編碼方式有關:
unicode編碼中不論中英文,統一兩個字節。即能存放n/2個字符。
utf-8編碼中英文為1個字節,中文占用3個字節。即能存放x+3y=n,x+y個字符。

在4.0以后

由于這種方式雖然方便了底層運算,但在使用起來非常不方便,所以4.0以后的n代表字符個數
varchar(1300)能存放1300個漢字或字母或數字。由mysql底層換算成字節。
但是,換算后的字節依然不能超過最大個數0xffff個,否則會自動轉換成text型。


查看完整回答
反對 回復 2019-04-25
  • 4 回答
  • 0 關注
  • 1457 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號