达梦æ°æ®åºå符éä¸varcharé¿åº¦åä½éæ©
å¨å¦ä¹ è¿ä¹åæ们å ä»ç»è¾¾æ¢¦æ°æ®åºä¸ä¸¤ä¸ªéè¦åæ°ã
LENGTH_IN_CHARï¼VARCHAR ç±»å对象çé¿åº¦æ¯å¦ä»¥å符为åä½ã1ï¼æ¯ï¼è®¾ç½®ä¸ºä»¥å符为åä½æ¶ï¼å®ä¹é¿åº¦å¹¶éçæ£æç §å符é¿åº¦è°æ´ï¼èæ¯å°åå¨é¿åº¦å¼æç §ç论å符é¿åº¦è¿è¡æ¾å¤§ãæ以ä¼åºç°å®é å¯æå ¥å符æ°è¶ è¿å®ä¹é¿åº¦çæ åµï¼è¿ç§æ åµä¹æ¯å 许çãåæ¶ï¼åå¨çåèé¿åº¦ 8188 ä¸éä»ç¶ä¸åï¼ä¹å°±æ¯è¯´ï¼å³ä½¿å®ä¹åé¿åº¦ä¸º8188 å符ï¼å ¶å®é è½æå ¥çå符串å ç¨æ»åèé¿åº¦ä»ç¶ä¸è½è¶ è¿ 8188ï¼0ï¼å¦ï¼ææ VARCHAR ç±»å对象çé¿åº¦ä»¥åè为åä½ãå ¶åå¼ 0 æ 1ãé»è®¤å¼ä¸º 0
CHARSETï¼UNICODE_FLAGï¼ï¼å符éé项ã0 代表 GB18030,1 代表UTF-8,2 代表é©æå符é EUC-KRãï¼è¿éåªè®¨è®ºå两ç§ç±»åï¼
varcharæ°æ®ç±»åæ¯æçéå®é¿å符串ï¼ç¨æ³ç±»ä¼¼charæ°æ®ç±»åï¼å¯ä»¥æå®ä¸ä¸ªä¸è¶ è¿8188çæ£æ´æ°ä½ä¸ºå符é¿åº¦ï¼ä¾å¦ï¼varchar(100)ãå¦ææªæå®é¿åº¦ï¼ç¼ºç为8188ãå¨åºè¡¨ä¸ï¼å½æ²¡ææå®USINGLONG ROW åå¨é项æ¶ï¼æå ¥varcharæ°æ®ç±»åçå®é æ大åå¨é¿åº¦ç±æ°æ®åºé¡µé¢å¤§å°å³å®ã
å¨ä½¿ç¨DMINITåå§åæ°æ®åºçæ¶åï¼æ两个åæ°CHARSETåLENGTH_IN_CHARè·å符éç¸å ³ã
CHARSETï¼æ¤åæ°è¡¨ç¤ºäºæ°æ®åºä¸æææ°æ®çå符éï¼å æ¬æ°æ®åå ¸çå符éãéè¦æ³¨æçæ¯ï¼æ°æ®åºä¸æ¦åå§åå®æï¼å符éå°±å°æ æ³ä¿®æ¹ãæ们å¯ä»¥ä½¿ç¨select unicodeæ¥æ¥è¯¢å½åæ°æ®åºçå符éç§ç±»ï¼0代表gb18030ï¼1代表UTF8ã
LENGTH_IN_CHARï¼æ¤åæ°å³å®äºï¼æ°æ®åºä¸çvarcharç±»å对象çé¿åº¦æ¯å¦ä»¥å符为åä½ãåå¼ä¸º1å设置为以å符为åä½ï¼å°åå¨é¿åº¦å¼æç §ç论å符é¿åº¦è¿è¡æ¾å¤§ãåå¼ä¸º0åæævarcharç±»å对象çé¿åº¦ä»¥åè为åä½ã
1.LENGTH_IN_CHAR=0ï¼CHARSET=1(å符éæ¯utf-8,é¿åº¦ä»¥åè为åä½)
create table test(ca varchar(1));
insert into test values('1');
insert into test values('æ'); -- å[NAME]é¿åº¦è¶
åºå®ä¹.
æ¥ç表æ°æ®ãæ°æ®é¿åº¦ååèé¿åº¦
select ca,LENGTH(ca),LENGTHB(ca) from test;
create table test(ca varchar(3));
insert into test values('aaa');
insert into test values('æ');
insert into test values('æ们'); -- å[NAME]é¿åº¦è¶
åºå®ä¹.
æ¥ç表æ°æ®ãæ°æ®é¿åº¦ååèé¿åº¦
select ca,LENGTH(ca),LENGTHB(ca) from test;
å°ç»ï¼å½å符é为utf-8ï¼é¿åº¦ä»¥åè为åä½æ¶ï¼ä¸ä¸ªæ±åå ä¸ä¸ªåèï¼ä¸ä¸ªè±æåæ¯å ä¸ä¸ªåèã
2.LENGTH_IN_CHAR=1ï¼CHARSET=1(å符éæ¯utf-8,é¿åº¦ä»¥å符为åä½)
create table test(ca varchar(1));
insert into test values('a');
insert into test values('aaa');
insert into test values('aaaa');
insert into test values('aaaaa'); -- å[NAME]é¿åº¦è¶
åºå®ä¹.
insert into test values('æ');
insert into test values('æ们'); -- å[NAME]é¿åº¦è¶
åºå®ä¹.
æ¥ç表æ°æ®ãæ°æ®é¿åº¦ååèé¿åº¦
select ca,LENGTH(ca),LENGTHB(ca) from test;
å°ç»ï¼å½å符é为utf-8ï¼é¿åº¦ä»¥å符为åä½æ¶ï¼ä¸ä¸ªæ±åå ä¸ä¸ªåèï¼ä¸ä¸ªè±æåæ¯å ä¸ä¸ªåèï¼ä¸ä¸ªå符å个åèï¼å³ä¸ä¸ªvarcharåä½å å个åèï¼ï¼å¯ä»¥åå个è±æåæ¯ã
3.LENGTH_IN_CHAR=1ï¼CHARSET=0(å符éæ¯gb18030,é¿åº¦ä»¥å符为åä½)
create table test(name varchar(3));
insert into test values('æ');
insert into test values('æ们');
insert into test values('æ们ç');
insert into test values('æ们ç家');-- å[NAME]é¿åº¦è¶
åºå®ä¹.
insert into test values('aaa');
insert into test values('aaaab');
insert into test values('aaaabb');
insert into test values('aaaabbb');-- å[NAME]é¿åº¦è¶
åºå®ä¹.
æ¥ç表æ°æ®ãæ°æ®é¿åº¦ååèé¿åº¦
select name,LENGTH(name),LENGTHB(name) from test;
å°ç»ï¼å½å符é为gb18030ï¼é¿åº¦ä»¥å符为åä½æ¶ï¼ä¸ä¸ªæ±åå 两个åèä¸ä¸ªå符ï¼ä¸ä¸ªè±æåæ¯å ä¸ä¸ªåèï¼ä¸ä¸ªå符å¯ä»¥åä¸ä¸ªæ±åæè 两个è±æåæ¯ã
4.LENGTH_IN_CHAR=0ï¼CHARSET=0(å符éæ¯gb18030,é¿åº¦ä»¥åè为åä½)
create table test(name varchar(3));
insert into test values('æ');
insert into test values('aaa');
insert into test values('æ们');-- å[NAME]é¿åº¦è¶
åºå®ä¹.
insert into test values('æ们ç');-- å[NAME]é¿åº¦è¶
åºå®ä¹.
æ¥ç表æ°æ®ãæ°æ®é¿åº¦ååèé¿åº¦
select name,LENGTH(name),LENGTHB(name) from test;
å°ç»ï¼å½å符é为gb18030ï¼é¿åº¦ä»¥åè为åä½æ¶ï¼ä¸ä¸ªæ±åå 两个åèï¼ä¸ä¸ªè±æåæ¯å ä¸ä¸ªåèã
ç±æ¤å¯è§ï¼å¨è¾¾æ¢¦æ°æ®åºä¸ä»¥utf-8为å符éæ¶ï¼ä¸ä¸ªå符=å个åèï¼ä¸ä¸ªè±æåæ¯å ä¸ä¸ªåèï¼ä¸ä¸ªæ±åå ä¸ä¸ªåèï¼ä»¥gb18030为å符éæ¶ï¼ä¸ä¸ªå符=两个åèï¼ä¸ä¸ªè±æåæ¯å ä¸ä¸ªåèï¼ä¸ä¸ªæ±åå 两个åèã