MySQL靜態修正varchar長度的辦法。本站提示廣大學習愛好者:(MySQL靜態修正varchar長度的辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL靜態修正varchar長度的辦法正文
固然這類情形不該該產生,平日像我們關系型數據庫,我們應當是事前設計好,今後不克不及修改,然則因為之前任務的忽視,其實說真話,也不只僅是我小我的忽視,重要是溝通上的緣由,固然數據庫究竟是我設計的,所以,照樣自我批駁一下。
說一下情形:MySQL字段有個varchar值字段設置的太短了,設置了30個,(我模糊記得varchar是可擴大的,固然實際其實不容忍我的模糊),所以我只能找一個辦法在包管數據庫數據不變的情形下,靜態修正varchar字段的長度,找了一段時光,終究讓我找到了。
alter table 表名 modify column 字段名 varchar(數目);
這個功效照樣比擬壯大的,然則照樣提示年夜家最好設計的時刻就不要湧現這類成績啊。
PS:mysql中的設置varchar長度成績
假如某一項中設置的是varchar(50)
那末對英文固然是50
那末對中文呢
utf-8的中文占3個字節
那末,這個varchar(50)是否是只能存16個漢字了?
mysql varchar(50) 不論中文 照樣英文 都是存50個的
MySQL5的文檔,個中對varchar字段類型如許描寫:varchar(m) 變長字符串。M 表現最年夜列長度。M的規模是0到65,535。(VARCHAR的最年夜現實長度由最長的行的年夜小和應用的字符集肯定,最年夜有用長度是65,532字節)。
為什麼會這般變換?真是感到MySQL的手冊做的太不友愛了,由於你要細心的持續往下讀才會發明這段描寫:MySQL 5.1服從尺度SQL標准,而且不刪除VARCHAR值的尾部空格。VARCHAR保留時用一個字節或兩個字節長的前綴+數據。假如VARCHAR列聲明的長度年夜於255,長度前綴是兩個字節。
好了,貌似懂了一點。但詳細他說的長度年夜於255時應用2個字節長度前綴,小學減法題:65535 - 2 = 65533啊。不曉得這些年夜牛若何盤算的,暫且保存疑問吧?
注:我測試了一下應用UTF8編碼,varchar的最年夜長度為21854字節。
在mysql 5.0.45版本,數據庫編碼utf8下停止測試:varchar最長界說為21785。也就是說豈論字母、數字、漢字,只能放21785個。
推想:varchar字節最年夜65535,utf8編碼一個字符3個字節65535/3=21785。
以上所述是小編給年夜家引見的MySQL靜態修正varchar長度的辦法,願望對年夜家有所贊助,假如年夜家有任何疑問請給我留言,小編會實時答復年夜家的。在此也異常感激年夜家對網站的支撐