關於varchar 的長度問題

2021-06-07 01:20:52 字數 2502 閱讀 2664

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 型別的資料列裡,每個值只佔用剛好夠用的...