1樓:匿名使用者
我覺得您應該首先確認一下儲存在資料庫中的張三,123的長度,很可能是你出入的時候就已經發生了錯誤。varchar型別,如果資料庫中資料沒有空格,取值到變數中,是絕對不可能出現空格的。所以問題很可能在你插入資料的時候就有了。
這種按照長度補空格,只有char行才會有。
所以先確定一下資料庫表中資料的長度到底是多少?使用len函式查詢一下。
select len(使用者名稱), len(密碼) from 表名字
看看長度是不是有問題。
另外,如果有空格,可以使用rtrim函式把右邊的空格去掉,這樣也可以保證資料的準確。
select rtrim(使用者名稱), rtrim(密碼) from 表名
ltrim是去左側空格的函式,rtrim是去右側空格的函式。
因為sqlserver中沒有trim函式同時去掉左側右側的空格,所以要分別使用ltrim和rtrim來去掉左邊和右邊的空格。你這個只是在右側補了空格,使用rtrim就夠用了。
2樓:匿名使用者
如果是文字框就像發表文章之類一般欄位型別最好使用text,就可以輸入很多字的,而varchar(20)只能輸入20個字以內的。一般是用來註冊使用者名稱和密碼之類的。
3樓:
是的哦。一個漢字佔兩個字元。英文和數字佔一個字元。
varchar(20)裡就是表示字元的位數。
所以樓主的推論是正確的
4樓:帥到底
恩 是這麼回事。 輸入的字元或漢字不能超出你定義的範圍。
mysql中的設定varchar長度問題...
5樓:匿名使用者
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。
6樓:
25個漢字
數字是50個
英文也是50個
這個型別你可以定義大點都無所謂
mysql中 varchar(20)我的資料長度超過了,varchar不是自動增長的嗎,為什麼他把後面超過的內容給截了。
7樓:
mysql中 varchar(20)資料長度超過了是設定錯誤造成的,解決方法為:
1、通過my.ini(linux下為my.cnf)的配置檔案進行修改。一般my.ini檔案在安裝檔案的根目錄下。
2、系統是windows10,安裝目錄下沒有my.ini檔案。
3、仔細找了一下,my.ini檔案在programdata下。
4、開啟配置檔案,在 [mysqld] 的後面加入一行「ft_min_word_len=1」。ps:也可以設定成ft_min_word_len=2,具體情況根據自己的中文資料而定。
5、重啟mysql服務。注意,配置檔案修改後一定要重啟服務後才能生效。
6、檢視一下最小索引長度,確定生效。sql語句:show global variables like '%__word_len%'。
8樓:匿名使用者
varchar所指的自動增長,並不可能超出你所賦與的範圍,超出範圍的,會被自動擷取掉,
他的自動增長,其實應該說是自動縮放,不到你賦的20的,例只有13,他只存13位,而 char無論實際是多少,都會存20,
自動增長只有tinytext,text可以了,
9樓:
你已經給長度定義為最長20位,超過20位,當然擷取了
10樓:匿名使用者
誰告訴你varchar是自動增長的?自動增長還設定長度幹嗎?
11樓:匿名使用者
alter table'student' add 's_***' varchar(20) not null;
關於構造柱錨固長度
構造柱不是受力承重構件它的鋼筋錨固長度不必硬套lae。砌體結構裡 女兒牆構造柱,鋼筋到屋面圈樑底筋彎折90 水平長度250mm 底層構造柱,有地圈樑時,鋼筋到圈樑底筋彎折90 水平長度250mm 無地圈時,鋼筋到基礎底筋彎折90 水平長度250mm 無地圈基礎較深時,構造柱底標高必須比室外地面低50...
c語言strlen判斷字元長度的問題
不是6應該是5吧 因為你輸入的長度是4再加 0 所以是5 include include main 試試這樣的,你要是一個字元一個字元的輸入,if a i n 就沒意義了。你定義的字元陣列char 4 他的長度就是5 上你的scanf 輸入後有個 0就6了 scanf s a 這樣 c語言中,存放字...
mysql中的資料型別varchar 255 表示什麼意思
char是一種固定長度的型別,varchar則是一種可變長度的型別,它們的區別是 char m 型別的資料列裡,每個值都佔用m個位元組,如果某個長度小於m,mysql就會在它的右邊用空格字元補足 在檢索操作中那些填補出來的空格字元將被去掉 在varchar m 型別的資料列裡,每個值只佔用剛好夠用的...