[問題] 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