① 在oracle中一個漢字,一個字母,一個數字分別佔多少個字元
需要看資料庫使用什麼字元集?如果是rtf8,那麼一個漢字需要3個位元組。如果是GBK,它需要2個位元組。
從表名中選擇*,其中length(NVL(field,'))=1orderbyfield
例如:如何確定具有多個不同長度的列中的數字的長度
如:I_CODE
從表名中選擇I_CODE,其中length(I_CODE)=4。所以我們可以算出答案
此外,一個漢字在Oracle資料庫中佔用的位元組數與資料庫的字元集有關。當UTF8時,長度為3。從al中選擇lengthb('float')可以查詢在Oracle資料庫中中國字元佔用多少位元組
(1)sql一個字占幾個字元擴展閱讀:
使用以下函數查詢包含欄位長度小於10的DNO欄位的表
Select * from user_tab_cols t where t。conumn_name,比如'%DNO '和data_length <
10;select * from user_tab_cols t where t。conumn_name,比如'%DNO'和data_length < 10;
有時,當資料庫中有許多包含相同欄位的表時,您可以通過詢問需要更改什麼來更改表欄位的長度。
② mysql資料庫一個漢字到底占幾個位元組
一個漢字佔多少長度與編碼有關:
若採用UTF-8編碼,則一個漢字=3個位元組。
若採用GBK編碼,則一個漢字=2個位元組。
項目中oracle10g資料庫表欄位為varchar(n)類型,存英文很簡單,只要字母個數不大於n即可。但是對於漢字,按照同樣的方法就不行了。因為對於漢字不同的字元集,在資料庫佔用的位元組是不一樣的。
比如varchar(10)類型的欄位,UTF-8的漢字,只能存3個,gbk字元集的漢字卻能存5個。所以在程序中根據表欄位varchar的大小,保存或更新時作出必要的校驗否則後台會報錯。
對於一個網站、論壇來說,如果英文字元較多,則建議使用UTF-8節省空間。不過現在很多論壇的插件一般只支持GBK。
GB2312是GBK的子集,GBK是GB18030的子集
GBK是包括中日韓字元的大字元集合
(2)sql一個字占幾個字元擴展閱讀
字元最終是以二進制形式存儲在磁碟的,這也是為什麼要有字元編碼的原因,因為計算機最終都要以二進制形式存儲,那麼編碼規則就是用什麼樣的二進制來代表這個字元。
例如,ASCII碼表中,01000011這個二進制對應的十進制是67,它代表的就是英語字母C。准確概述來說,字元編碼方式是用一個或多個位元組的二進制形式表示字元集中的一個字元。
每種字元集都有自己特有的編碼方式,因此同一個字元,在不同字元集的編碼方式下,可能會產生不同的二進制形式。
另外,字元集合只是指定了一個集合中有哪些字元,而字元編碼,是為這個集合中所有字元定義相關編號,而字元集(注意與字元集合的區別)是字元和集合與編碼規則的混合體,這也是有時候編碼方案代表字元集的原因。
③ SQL的語句最大長度限制多少字元
MSSQL SQL語句的最大長度是有限度的,對於varchar類型最多可以有8000個字元(varchar如果含中文字元,則一個中文字元要佔兩位),nvarchar類型最多可以接受4000個字元,超出限制長度的部分會被截掉,語句可能因此變得不完整而無法執行。
④ SQL數據類型nchar,char,varchar與nvarchar所佔位元組數是多少
nchar與char是相似的,nvarchar與varchar是相似的。
(1)char類型: 對英文(ASCII)字元佔用1個位元組,對一個漢字佔用2個位元組,CHAR存儲定長數據很方便,CHAR欄位上的索引效率級高,比如定義 char(10),那麼不論你存儲的數據是否達到了10個位元組,都要佔去10個位元組的空間,不夠的字元用空格去填。因為是固定長度,所以速度效率高。
(2)Varchar類型:Varchar 的類型不以空格填滿,比如varchar(100),但它的值只是"qian",則它的值就是"qian"。
(3)而char 不一樣,比如char(100),它的值是"qian",而實際上它在資料庫中是"qian "(qian後共有96個空格,就是把它填滿為100個位元組)。
(4)由於char是以固定長度的,所以它的速度會比varchar快得多!但程序處理起來要麻煩一點,要用trim之類的函數把兩邊的空格去掉。
(5)VARCHAR存儲變長數據,但存儲效率沒有CHAR高。如果一個欄位可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 VARCHAR(10)是最合算的。VARCHAR類型的實際長度是它的值的實際長度+1。為什麼「+1」呢?這一個位元組用於保存實際使用了多大的長度。
(6)nchar類型和Nvarchar類型是怎麼一回事呢?為了與其他多種字元的轉換,如中文,音標等,對每個英文(ASCII)字元都佔用2個位元組,對一個漢字也佔用兩個位元組,所有的字元都佔用2個位元組。
(7)關於長度與漢字:varchar(100)/char(100)能存50個漢字,nvarchar(100)/nchar(100)能存100個漢字。
⑤ sql里數據類型nchar(10)為什麼能存10個漢字, char(10)只能存5個漢字
這個得看你字元是按照什麼樣的編碼規則
1、如果是單位元組編碼,舉個例子ASCII,一個字元(准確來說是英文字元)是用一個位元組編碼的,而按照ASCII的拓展編碼(具體是哪個編碼規則忘了,不過可以統稱ANSI),一個漢字是用兩個字元表示,所以在此編碼規則下,存放一個漢字(兩個字元)需要兩個位元組,而char(10)中的10指的是字元個數,而不是多少位元組(雖然在這種編碼下得到的結果一樣,因為一個字元對應一個位元組,但是對於雙位元組編碼的不是這樣理解的),所以char(10)可以存10個字元,兩個個字元表示一個漢字,所以最多存5個漢字。
2、如果是雙位元組編碼,一個字元(這里的字元不僅僅包括英文字元,還包括中文字元即漢字,以及其他的字元)是用兩個位元組編碼的,nchar()存儲的是UNICODE字元,它是採用雙位元組編碼規則,即一個字元相當於兩個位元組,但是nchar(10)其實不需要考慮到位元組問題,這個10指的就是字元個數,在此規則下漢字和英文字元一樣的性質,所以nchar(10)就能存10個漢字。
總結:發生這樣的疑惑主要是,單位元組編碼沒有把漢字等同於一般的字元例如英文字元,而是採用兩個一般的字元來表示一個漢字,而雙位元組編碼一視同仁,說到字元就是指所有字元,包括漢字。