PostgreSql數(shù)據(jù)庫(kù)中varchar類(lèi)型與sql server中字段用法有差別,PostgreSql中如果字段設(shè)置為varchar類(lèi)型長(zhǎng)度為10,則無(wú)論存字母、數(shù)字或其它符號(hào),長(zhǎng)度最大為10個(gè),也就是字母和漢字占的位置是一樣的。
Sql server中如設(shè)置字段類(lèi)型為nvarchar類(lèi)型長(zhǎng)度為10,則存漢字最大為5個(gè),字母為10個(gè),字母加漢字混合時(shí),字母和漢字占的長(zhǎng)度一樣
![](/d/20211018/faf26b94fe6d37530c4487df5824a481.gif)
![](/d/20211018/86d1b1f69c606cac7861f685a574d096.gif)
![](/d/20211018/198522a05c97c76ecf412de3c072a475.gif)
補(bǔ)充:Postgresql 數(shù)據(jù)庫(kù) varchar()字符占用多少字節(jié)
如下所示:
create table tmp1
(
name varchar(3)
);
select pg_size_pretty(pg_relation_size('tmp1'));
-- 0 bytes
insert into tmp(name) values('歐陽(yáng)子');
-- 8192 bytes
8192 bytes = 8KB = 1頁(yè)(數(shù)據(jù)庫(kù)的最小單位)
8頁(yè) = 1區(qū) = 64KB(記不清磁頭一次取1區(qū)還是1頁(yè)數(shù)據(jù)了)
pg_relation_size()函數(shù)用于查詢表占用空間.
當(dāng)表創(chuàng)建的時(shí)候, 是不占空間的, 插入數(shù)據(jù)后, 數(shù)據(jù)庫(kù)至少使用1KB去保存數(shù)據(jù), 不夠會(huì)繼續(xù)增加.(不包含MateData)
首先postgresql中varchar()保存的是字符.
即可以插入3個(gè)中文, 也可以插入三個(gè)字母或者數(shù)字.
一般數(shù)據(jù)庫(kù)都是UTF-8編碼.
在UTF-8編碼下, 一個(gè)中文 3個(gè)字節(jié). 字母或者英文 1個(gè)字節(jié).
另外
1KB = 1024B = 1024Bytes
1Bytes = 1B = 8bit
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
您可能感興趣的文章:- PostgreSQL 實(shí)現(xiàn)查詢表字段信息SQL腳本
- PostgreSQL 更新JSON,JSONB字段的操作
- postgresql 實(shí)現(xiàn)獲取所有表名,字段名,字段類(lèi)型,注釋
- postgresql 修改字段長(zhǎng)度的操作
- PostgreSQL 修改表字段常用命令操作
- 解決postgresql表中的字段名稱包含特殊符號(hào)的問(wèn)題