java中字符串截取功能_Java中字符串截取String.subString();

数据库中字段为:

comment

varchar(1300) DEFAULT NULL COMMENT ‘备注信息’,

我现在为了保证insert语句插入表中的这个字段的时候,不会出现抛出异常的情况。我要对于String,截取到varchar(1300)范围的数据。这个1300有多大范围?怎么来弄??

您好,没记错的话,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);

1300

表示

字符

Java:

"1300len...".length()

大于

1300

时会出现

Data too long...

可以将数据库字段改短一时,写点数据试一下就明了了。

这个要看你用的什么数据库,我看你标签是

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

型。

可以参考这篇文章:

http://blog.csdn.net/a1988102…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值