ORACLE³õʼ»¯²ÎÊý£ºNLS_LENGTH_SEMANTICS
³õʼ»¯²ÎÊýNLS_LENGTH_SEMANTICSÓÃÓÚÖ¸¶¨CHARÁлòVARCHAR2Áеij¤¶È¶¨Ò巽ʽ£¬Ä¬ÈÏֵΪBYTE¡£
µ±ÉèÖøòÎÊýΪBYTEʱ£¬¶¨ÒåCHARÁлòVARCHAR2ÁвÉÓÃ×Ö½Ú³¤¶È·½Ê½£»
µ±ÉèÖøòÎÊýΪCHARʱ£¬¶¨ÒåCHARÁлòVARCHAR2ÁвÉÓÃ×Ö·û¸öÊý·½Ê½¡£
ÐèҪעÒ⣬ÉèÖøòÎÊý¶ÔÓÚÒÑ´æÔÚ²ÎÊýûÓÐ×÷Óá£
Éú²ú¿â
nls_language string SIMPLIFIED CHINESE
nls_length_semantics string BYTE
²âÊÔ¿â
nls_language string AMERICAN
nls_length_semantics string BYTE
varchar2(20)ºÍvarchar2(20 byte)ÊÇ·ñÏàÍ¬ÄØ£¿
Ï಻ÏàͬÊÇÓÉ
Êý¾Ý¿âµÄ²ÎÊýNLS_LENGTH_SEMANTICS¾ö¶¨µÄ£¬ÓÐÁ½¸öµ¥Î»£¬char£¨×Ö·û£©»òÕß×Ö½Ú£¨byte£©£¬¸Ã²ÎÊýĬÈÏֵΪBYTE¡£ËùÒÔ˵£¬ÔÚĬÈÏÇé¿öÏ varchar2(20) = varchar2(20 byte)¡£Èç¹û²ÎÊýֵΪCHAR ¾Í²»ÏàµÈ¡£
Á½¸ö¿âͬһÕűí
select PERSON
from temp_opt_order_trace
where LENGTH(PERSON)=21
person varchar2(32)
'¶þÀɹ«½»³µÕ¾¶ÔÃæ18355200098´úÇ©'
Õâô˵À´ VARCHAR2(32) ÊÇ×Ö·û ²»ÊÜNLS_LENGTH_SEMANTICS ÊÇ·ñBYTESÓ°Ïì ͬʱҲ²»ÊÜnls_language ÓïÑÔÓ°Ïì. ÔÚÎÒµÄ11.2.0.0.1¿âÀï.
ÆäʵÊÜÓ°ÏìµÄ ÆäPERSON×î´óÖµ 21 Õâ¸öÊÇ×Ö·û³¤¶È Ò²¾ÍÊÇ×Ö·û¸öÊý ×Öĸ,ÖÐÎÄ,Êý×Ö¶¼Ëã1¸ö. µ±Êµ¼ÊÉ϶ÔÓ¦µÄBYTES ÖÐÎÄÕ¼2¸ö,×ÖĸºÍÊý×ÖÕ¼1¸ö.
nls_language Èç¹ûÊÇUNICODE UTF-8 AU32 ÖÐÎÄÊÇÕ¼3¸ö×Ö½Ú.