Ⅰ 在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;
有時,當資料庫中有許多包含相同欄位的表時,您可以通過詢問需要更改什麼來更改表欄位的長度。
Ⅱ 資料庫中一個漢字占幾個字元
如果你說的「字元」就是指 Java 中的 char,那好,那它就是 16 位,2 位元組。
如果你說的「字元」是指我們用眼睛看到的那些「抽象的字元」,那麼,談論它占幾個位元組是沒有意義的。具體地講,脫離具體的編碼談某個字元占幾個位元組是沒有意義的。
就好比有一個抽象的整數「42」,你說它占幾個位元組?這得具體看你是用 byte,short,int,還是 long 來存它。
用 byte 存就佔一位元組,用 short 存就占兩位元組,int 通常是四位元組,long 通常八位元組。
當然,如果你用 byte,受限於它有限的位數,有些數它是存不了的,比如 256 就無法放在一個 byte 里了。
字元是同樣的道理,如果你想談「占幾個位元組」,就要先把編碼說清楚。同一個字元在不同的編碼下可能占不同的位元組。
就以你舉的「字」字為例,「字」在 GBK 編碼下占 2 位元組,在 UTF-16 編碼下也占 2 位元組,在 UTF-8 編碼下占 3 位元組,在 UTF-32 編碼下占 4 位元組。不同的字元在同一個編碼下也可能占不同的位元組。
「字」在 UTF-8 編碼下佔3位元組,而「A」在 UTF-8 編碼下占 1 位元組。(因為 UTF-8 是變長編碼),而 Java 中的 char 本質上是 UTF-16 編碼。而 UTF-16 實際上也是一個變長編碼(2 位元組或 4位元組)。
如果一個抽象的字元在 UTF-16 編碼下占 4 位元組,顯然它是不能放到 char 中的。換言之, char 中只能放 UTF-16 編碼下只佔 2 位元組的那些字元。而 getBytes 實際是做編碼轉換,你應該顯式傳入一個參數來指定編碼,否則它會使用預設編碼來轉換。
你說「 new String("字").getBytes().length 返回的是3 」,這說明預設編碼是 UTF-8.
如果你顯式地傳入一個參數,比如這樣「 new String("字").getBytes("GBK").length 」,那麼返回就是 2。你可以在啟動 JVM 時設置一個預設編碼,假設你的類叫 Main,那麼在命令行中用 java 執行這個類時可以通過 file.encoding 參數設置一個預設編碼。
比如這樣:java -Dfile.encoding=GBK Main
這時,你再執行不帶參數的 getBytes() 方法時,new String("字").getBytes().length 返回的就是 2 了,因為現在預設編碼變成 GBK 了。
當然,如果這時你顯式地指定編碼,new String("字").getBytes("UTF-8").length 返回的則依舊是 3.
否則,會使用所在操作系統環境下的預設編碼。
通常,Windows 系統下是 GBK,Linux 和 Mac 是 UTF-8.
但有一點要注意,在 Windows 下使用 IDE 來運行時,比如 Eclipse,如果你的工程的預設編碼是 UTF-8,在 IDE 中運行你的程序時,會加上上述的 -Dfile.encoding=UTF-8 參數,這時,即便你在 Windows 下,預設編碼也是 UTF-8,而不是 GBK。
由於受啟動參數及所在操作系統環境的影響,不帶參數的 getBytes 方法通常是不建議使用的,最好是顯式地指定參數以此獲得穩定的預期行為。
Ⅲ sql字元串佔用空間
默認漢字會占倆位,英文字母、數字佔一位。
是想要看,一個字元串,存儲到varchar里佔多少位?
select length('我') from al --返回1
select lengthb('我') from al --返回2
select length('AB') from al --返回2
select lengthb('AB') from al --返回2
Ⅳ pl/sql中中文是幾個字元
在計算機中一個字的佔位是按位元組計算的,一個位元組佔8位二進制。
通常分為單位元組字,和雙位元組字。數字、字母、常用符號都屬於單位元組字,
漢子都屬於雙位元組字。通常可以說一個漢子占兩個字元位。
例如:在SQL函數SUBSTR中,按字計算,數字、字母、漢字都看做一個字,
但在SUNSTRB中,按位元組計算,數字、字母是一個位元組,漢字算2個位元組。
Ⅳ Sql中類型佔多少位元組
int 從 -2^31 (-2,147,483,648) 到 2^31 - 1 (2,147,483,647) 的整型數據(所有數字)。 smallint 從 -2^15 (-32,768) 到 2^15 - 1 (32,767) 的整數數據。 tinyint 從 0 到 255 的整數數據。 bit bit 1 或 0 的整數數據。 decimal 和 numeric decimal 從 -10^38 +1 到 10^38 –1 的固定精度和小數位的數字數據。 numeric 功能上等同於 decimal。 money 和 smallmoney money 貨幣數據值介於 -2^63 (-922,337,203,685,477.5808) 與 2^63 - 1 (+922,337,203,685,477.5807) 之間,精確到貨幣單位的千分之十。 smallmoney 貨幣數據值介於 -214,748.3648 與 +214,748.3647 之間,精確到貨幣單位的千分之十。 近似數字 float 從 -1.79E + 308 到 1.79E + 308 的浮點精度數字。 real 從 -3.40E + 38 到 3.40E + 38 的浮點精度數字。 datetime 和 smalldatetime datetime 從 1753 年 1 月 1 日到 9999 年 12 月 31 日的日期和時間數據,精確到百分之三秒(或 3.33 毫秒)。 smalldatetime 從 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和時間數據,精確到分鍾。 字元串 char 固定長度的非 Unicode 字元數據,最大長度為 8,000 個字元。 varchar 可變長度的非 Unicode 數據,最長為 8,000 個字元。 text 可變長度的非 Unicode 數據,最大長度為 2^31 - 1 (2,147,483,647) 個字元。 Unicode 字元串 nchar 固定長度的 Unicode 數據,最大長度為 4,000 個字元。 nvarchar 可變長度 Unicode 數據,其最大長度為 4,000 字元。sysname 是系統提供用戶定義的數據類型,在功能上等同於 nvarchar(128),用於引用資料庫對象名。 ntext 可變長度 Unicode 數據,其最大長度為 2^30 - 1 (1,073,741,823) 個字元。 二進制字元串 binary 固定長度的二進制數據,其最大長度為 8,000 個位元組。 varbinary 可變長度的二進制數據,其最大長度為 8,000 個位元組。 image 可變長度的二進制數據,其最大長度為 2^31 - 1 (2,147,483,647) 個位元組。 其它數據類型 cursor 游標的引用。 sql_variant 一種存儲 SQL Server 支持的各種數據類型(text、ntext、timestamp 和 sql_variant 除外)值的數據類型。 table 一種特殊的數據類型,存儲供以後處理的結果集。 timestamp 資料庫范圍的唯一數字,每次更新行時也進行更新。 uniqueidentifier 全局唯一標識符 (GUID)。
Ⅵ SQL中字元數據類型有占單位元組和雙位元組字元之分。。
nvarchar表是漢字..
varchar是表示所有的字元,包括漢字,字母,數字,特殊符號..
Ⅶ 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個漢字。