第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

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

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

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

4 回答

?
largeQ

TA貢獻(xiàn)2039條經(jīng)驗(yàn) 獲得超8個(gè)贊

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

類似的,在Java中,字符串的長(zhǎng)度也是字符相關(guān)的,如:


// 輸出字符個(gè)數(shù)為4

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

因此如果你要將字符串結(jié)為1300長(zhǎng)度,只需要如下代碼:


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

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

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

System.out.println(newStr);


查看完整回答
反對(duì) 回復(fù) 2019-04-25
?
慕雪6442864

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊

1300表示字符。
Java: "1300len...".length()大于1300時(shí)會(huì)出現(xiàn)Data too long...
可以將數(shù)據(jù)庫字段改短一時(shí),寫點(diǎn)數(shù)據(jù)試一下就明了了。

查看完整回答
反對(duì) 回復(fù) 2019-04-25
?
心有法竹

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊

這個(gè)要看你用的什么數(shù)據(jù)庫,我看你標(biāo)簽是mysql,所以此處以mysql為例。

在4.0以前

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

在4.0以后

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


查看完整回答
反對(duì) 回復(fù) 2019-04-25
  • 4 回答
  • 0 關(guān)注
  • 1442 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)