[问题] String分割问题

楼主: XDXQQ (杰洛尼莫)   2017-04-25 08:14:04
大家好
可能是我表达的不好,非常抱歉
我是想将字串传入数据库
可是这个字段只接受20byte
但是字串有中文英文
有可能会发生当第19byte是英文
第20byte是中文,这时中文就会被切开造成错误
所以想请问大家有没有办法判断这种情形时,就将第20byte的中文自动存入下一笔资料中
感谢大家的回答
作者: ssccg (23)   2017-04-25 09:33:00
为什么要把数据库字段开不够大? 没办法想像资料太长时是切到下一个row的use case,另外数据库的编码跟Java又是另一回事了,如果是UTF-8中文是3 byte
楼主: XDXQQ (杰洛尼莫)   2017-04-25 10:03:00
因为无法开大,所以才会想在java层解决@@
作者: swpoker (swpoker)   2017-04-25 10:47:00
oracle db有分位元跟字符两种,不知道你是用哪种?
楼主: XDXQQ (杰洛尼莫)   2017-04-25 10:48:00
我是用mssql,不过基本上sql那块是无法修改的
作者: ssccg (23)   2017-04-25 11:27:00
切成很多row也不能说是在java层解决吧,在数据库中原本属于同一笔资料的就直接拆成多个row了,你其他字段是打算怎么处理? key可以用重复的吗? 还是同一笔变成多个不同key的row?个人看法是: 数据库绝对不能动的话,就是说原结构定义是绝对的,那字段不可能出现超过长度的字串,你的资料根本不该存到该table...
楼主: XDXQQ (杰洛尼莫)   2017-04-25 12:10:00
其他字段是造原本的就好没有pk问题
作者: ssccg (23)   2017-04-25 13:51:00
反正你要这样做就做吧,记得要用数据库的编码来算长度就是
楼主: XDXQQ (杰洛尼莫)   2017-04-25 18:22:00
感谢回答~
作者: Lordaeron (Terry)   2017-04-25 20:51:00
答案不是给过了? 又问一次是?
作者: Jichang (C.C.Lemon)   2017-04-27 10:01:00
不用那么麻烦 在开一个表格 原本那格改填FK
作者: pttnews (PTT新闻)   2017-04-28 16:33:00
DATA TYPE : NVARCHAR
作者: jej (晃奶大馬桶)   2017-05-03 19:58:00
每个字getByte 长度超过20的那个字另写
作者: eieio (好多目标)   2017-05-06 14:58:00
切开来会怎样吗?读的时候接回去不就好了吗?

Links booklink

Contact Us: admin [ a t ] ucptt.com