char,varchar,nvarchar有什么区别,用户名应该用哪个,为什么 SQL中varchar和nvarchar有什么区别?

char ,varchar,nvarchar\u6709\u4ec0\u4e48\u533a\u522b

char \u7c7b\u578b\u662f\u4e00\u4e2a\u5b57\u8282 char\uff088\uff09\u53ea\u80fd\u5b588\u5b57\u6bcd
nchar \u7c7b\u578b\u662f\u53cc\u5b57\u8282 nchar\uff088\uff09\u80fd\u5b588\u4e2a\u6c49\u5b57
varchar \u7c7b\u578b\u662f\u53ef\u53d8\u7684\u3001\u5373\u5982\u679c varchar\uff088\uff09\u4f60\u53ea\u5b58\u4e86\u4e00\u4e2a\u5b57\u6bcd\u3001\u5728\u5185\u5b58\u4e2d\u53ea\u5360\u4e00\u4e2a\u5b57\u8282
char \u7c7b\u578b\u5982\u679c char\uff088\uff09\u4f60\u53ea\u5b58\u4e86\u4e00\u4e2a\u5b57\u6bcd\u3001\u5728\u5185\u5b58\u4e2d\u4e5f\u53608\u4e2a\u5b57\u8282

SQL\u4e2dvarchar\u548cnvarchar\u533a\u522b\uff1a\u8f93\u5165\u4e0d\u540c\uff0c\u542b\u4e49\u4e0d\u540c\u3002
\u4e00\u3001\u8f93\u5165\u4e0d\u540c\uff1a
varchar\uff084\uff09\u53ef\u4ee5\u8f93\u51654\u4e2a\u5b57\u7ebf\uff0c\u4e5f\u53ef\u4ee5\u8f93\u5165\u4e24\u4e2a\u6c49\u5b57\u3002
nvarchar\uff084\uff09\u53ef\u4ee5\u8f93\u56db\u4e2a\u6c49\u5b57\uff0c\u4e5f\u53ef\u4ee5\u8f934\u4e2a\u5b57\u6bcd\uff0c\u4f46\u6700\u591a\u56db\u4e2a\u3002
\u4e8c\u3001\u542b\u4e49\u4e0d\u540c\uff1a
varchar\uff08n\uff09\u957f\u5ea6\u4e3an\u4e2a\u5b57\u8282\u7684\u53ef\u53d8\u957f\u5ea6\u4e14\u975eUnicode\u7684\u5b57\u7b26\u6570\u636e\u3002n\u5fc5\u987b\u662f\u4e00\u4e2a\u4ecb\u4e8e1\u548c8\uff0c000\u4e4b\u95f4\u7684\u6570\u503c\u3002\u5b58\u50a8\u5927\u5c0f\u4e3a\u8f93\u5165\u6570\u636e\u7684\u5b57\u8282\u7684\u5b9e\u9645\u957f\u5ea6\uff0c\u800c\u4e0d\u662fn\u4e2a\u5b57\u8282\u3002
nvarchar\uff08n\uff09\u5305\u542bn\u4e2a\u5b57\u7b26\u7684\u53ef\u53d8\u957f\u5ea6Unicode\u5b57\u7b26\u6570\u636e\u3002n\u7684\u503c\u5fc5\u987b\u4ecb\u4e8e1\u4e0e4\uff0c000\u4e4b\u95f4\u3002\u5b57\u8282\u7684\u5b58\u50a8\u5927\u5c0f\u662f\u6240\u8f93\u5165\u5b57\u7b26\u4e2a\u6570\u7684\u4e24\u500d\u3002

\u5b57\u7b26\u6570\u636e\u7c7b\u578b
Varchar\u662f\u53d8\u957f\u5b57\u7b26\u6570\u636e\uff0c\u5176\u957f\u5ea6\u4e0d\u8d85\u8fc78KB\u3002Char\u662f\u5b9a\u957f\u5b57\u7b26\u6570\u636e\uff0c\u5176\u957f\u5ea6\u6700\u591a\u4e3a8KB\u3002\u8d85\u8fc78KB\u7684ASCII\u6570\u636e\u53ef\u4ee5\u4f7f\u7528Text\u6570\u636e\u7c7b\u578b\u5b58\u50a8\u3002\u4f8b\u5982\uff0c\u56e0\u4e3aHtml\u6587\u6863\u5168\u90e8\u90fd\u662fASCII\u5b57\u7b26\uff0c\u5e76\u4e14\u5728\u4e00\u822c\u60c5\u51b5\u4e0b\u957f\u5ea6\u8d85\u8fc78KB\uff0c\u6240\u4ee5\u8fd9\u4e9b\u6587\u6863\u53ef\u4ee5Text\u6570\u636e\u7c7b\u578b\u5b58\u50a8\u5728SQLServer\u4e2d\u3002
\u5728SQLServer\u4e2d\uff0cUnicode\u6570\u636e\u4ee5Nchar\u3001Nvarchar\u548cNtext\u6570\u636e\u7c7b\u578b\u5b58\u50a8\u3002\u4f7f\u7528\u8fd9\u79cd\u5b57\u7b26\u7c7b\u578b\u5b58\u50a8\u7684\u5217\u53ef\u4ee5\u5b58\u50a8\u591a\u4e2a\u5b57\u7b26\u96c6\u4e2d\u7684\u5b57\u7b26\u3002\u5f53\u5217\u7684\u957f\u5ea6\u53d8\u5316\u65f6\uff0c\u5e94\u8be5\u4f7f\u7528Nvarchar\u5b57\u7b26\u7c7b\u578b\uff0c\u8fd9\u65f6\u6700\u591a\u53ef\u4ee5\u5b58\u50a84000\u4e2a\u5b57\u7b26\u3002
\u4ee5\u4e0a\u5185\u5bb9\u53c2\u8003\uff1a\u767e\u5ea6\u767e\u79d1-SQL\u6570\u636e\u7c7b\u578b

一 、 nchar 和 nvarchar
nchar 是固定长度 Unicode 数据的数据类型,nvarchar 是可变长度 Unicode 数据的数据类型,二者均使用 UNICODE UCS-2 字符集。

nchar(n)

包含 n 个字符的固定长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。存储大小为 n 字节的两倍。nchar 在 SQL-92 中的同义词为 national char 和 national character。

nvarchar(n)

包含 n 个字符的可变长度 Unicode 字符数据。n 的值必须介于 1 与 4,000 之间。字节的存储大小是所输入字符个数的两倍。所输入的数据字符长度可以为零。nvarchar 在 SQL-92 中的同义词为 national char varying 和 national character varying。

注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。

如果希望列中所有数据项的大小接近一致,则使用 nchar。

如果希望列中数据项的大小差异很大,则使用 nvarchar。

使用 nchar 或 nvarchar 的对象被赋予数据库的默认排序规则,除非使用 COLLATE 子句赋予特定的排序规则。

SET ANSI_PADDING OFF 不适用于 nchar 或 nvarchar。SET ANSI_PADDING ON 永远适用于 nchar 和 nvarchar。

二、char 和 varchar
固定长度 (char) 或可变长度 (varchar) 字符数据类型。

char[(n)]

长度为 n 个字节的固定长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为 n 个字节。char 在 SQL-92 中的同义词为 character。

varchar[(n)]

长度为 n 个字节的可变长度且非 Unicode 的字符数据。n 必须是一个介于 1 和 8,000 之间的数值。存储大小为输入数据的字节的实际长度,而不是 n 个字节。所输入的数据字符长度可以为零。varchar 在 SQL-92 中的同义词为 char varying 或 character varying。

注释
如果没有在数据定义或变量声明语句中指定 n,则默认长度为 1。如果没有使用 CAST 函数指定 n,则默认长度为 30。

将为使用 char 或 varchar 的对象被指派数据库的默认排序规则,除非用 COLLATE 子句另外指派了特定的排序规则。该排序规则控制用于存储字符数据的代码页。

支持多语言的站点应考虑使用 Unicode nchar 或 nvarchar 数据类型以尽量减少字符转换问题。如果使用 char 或 varchar:

如果希望列中的数据值大小接近一致,请使用 char。

如果希望列中的数据值大小显著不同,请使用 varchar。
如果执行 CREATE TABLE 或 ALTER TABLE 时 SET ANSI_PADDING 为 OFF,则一个定义为 NULL 的 char 列将被作为 varchar 处理。

当排序规则代码页使用双字节字符时,存储大小仍然为 n 个字节。根据字符串的不同,n 个字节的存储大小可能小于 n 个字符。

总结:

1、 varchar:
可变长度的非 Unicode 数据,最长为 8,000 个字符。
2、nvarchar:
可变长度 Unicode 数据,其最大长度为 4,000 字符。
3、char:
固定长度的非 Unicode 字符数据,最大长度为 8,000 个字符。

4、nchar
固定长度的 Unicode 数据,最大长度为 4,000 个字符。

5、 char和varchar都是字符串类型的
用Unicode编码的字符串,结果是字符的整数值.

区别一楼说了。用户名用nvarchar,原因这是一种变长格式。用户在输入用户名时如果带空格,保存数据时会截取掉空格。再者会根据数据大小调整占用的空间。

  • char銆varchar銆乿archar2銆乶varchar2銆乶varchar鐨勫尯鍒笌浣跨敤_鐧惧害鐭 ...
    绛旓細绫诲瀷姣旇緝灏界varchar/varchar2鍜宯varchar/nvarchar2鍦ㄥ姛鑳戒笂鐩镐技锛屼絾varchar2瀵规墍鏈夊瓧绗﹀崰鐢ㄤ袱瀛楄妭锛岃宯varchar2瀵硅嫳鏂囧瓧绗︿篃濡傛銆傞夋嫨鍙栧喅浜庢暟鎹殑澶氭牱鎬у拰鏄惁闇瑕佹敮鎸佸鍥借瑷銆傞暱搴﹁祴鍊糲har闀垮害鍥哄畾锛岃寖鍥翠负1鑷8,000瀛楄妭锛泇archar鍜宯varchar鐨勯暱搴﹀彲鍙锛寁archar(max)閫傚悎瀛樺偍澶ч噺鏁版嵁銆傚綋瀛樺偍鏁版嵁鏃讹紝搴旀牴鎹...
  • 鏁版嵁搴char, varchar, nchar, nvarchar鏈変粈涔堝尯鍒?
    绛旓細鏁版嵁搴char锛寁archar锛nchar锛宯varchar绫诲瀷鍖哄埆涓猴細闀垮害涓嶅悓銆佸瓧鑺備笉鍚屻佺┖鏍间笉鍚屻備竴銆侀暱搴︿笉鍚 1銆乧har绫诲瀷锛歝har绫诲瀷鐨勯暱搴﹀浐瀹氾紝鍗犵敤鏇村鐨勫瓨鍌ㄧ┖闂淬2銆乿archar绫诲瀷锛歷archar绫诲瀷鐨勯暱搴︿笉鍥哄畾锛屽崰鐢ㄦ洿灏戠殑瀛樺偍绌洪棿銆3銆乶char绫诲瀷锛歯char绫诲瀷鐨勯暱搴﹀浐瀹氾紝鍗犵敤鏇村鐨勫瓨鍌ㄧ┖闂淬4銆乶varchar绫诲瀷锛歯varchar绫诲瀷...
  • char銆varchar銆乶char銆乶varchar銆乼ext涔嬮棿鏈夊摢浜涘尯鍒
    绛旓細char銆乿archar銆乶char銆乶varchar銆乼ext鐨勫尯鍒1.鏈塿ar鍓嶇紑鐨勶紝琛ㄧず鏄疄闄呭瓨鍌ㄧ┖闂存槸鍙橀暱鐨锛寁archar,nvarchar鎵璋撳畾闀垮氨鏄暱搴﹀浐瀹氱殑锛屽綋杈撳叆鐨勬暟鎹暱搴︽病鏈夎揪鍒版寚瀹氱殑闀垮害鏃跺皢鑷姩浠ヨ嫳鏂囩┖鏍煎湪鍏跺悗闈㈠~鍏咃紝浣块暱搴﹁揪鍒扮浉搴旂殑闀垮害锛屽綋浣犺緭鍏ョ殑瀛楃澶т簬鎸囧畾鐨勬暟鏃讹紝瀹冧細鎴彇瓒呭嚭鐨勯儴鍒嗭紱鑰屽彉闀垮瓧绗︽暟鎹垯涓嶄細浠...
  • 鏁版嵁搴char,varchar,nchar,nvarchar绫诲瀷鍒嗗埆鏈変粈涔堝尯鍒?鍚勮嚜鍦ㄤ粈涔堟儏 ...
    绛旓細varchar鍜宯varchar鍙互瀛樺偍鍗曞瓧鑺傚拰鍙屽瓧鑺傚瓧绗︼紝鍙彉闀垮害鐨勶紝鍖哄埆鍚屼笂銆俢har鍜宯char寰堝皯鐢锛寁archar鍜宯varchar鐢ㄧ殑姣旇緝澶氾紝鐢变簬nvarchar浼氭氮璐瑰瓨鍌ㄧ┖闂达紝鎵浠ヤ竴鑸儏鍐典笅鐢╲archar鐨勬椂鍊欐瘮杈冨锛宯varchar鏄繚璇佸畾涔夌殑闀垮害鏄100锛岄偅涔堜笉绠¤緭鍏ョ殑鍗曞瓧鑺傝繕鏄弻瀛楄妭瀛楃閮戒笉鑳借秴杩100锛岃寁archar澶у皬涓100閭d箞鍗曞瓧鑺傚瓧绗﹁緭...
  • mysql涓璫har銆varchar銆乶varchar鍖哄埆
    绛旓細char鐨勫瓨鍌ㄩ熺巼姣攙archar瑕侀珮锛屽洜涓簐archar瑕佸幓璁$畻杈撳叆瀛楃鐨勯暱搴︺備絾鏄┖闂寸殑鍒╃敤鐜囦笂varchar瑕佹瘮char鏇村ソ銆傛垜浠煡閬揢nicode缂栫爜瀵硅嫳鏂囧拰涓枃瀛楃閮芥槸鐢ㄤ袱涓瓧鑺傝〃绀猴紝nvarchar涓鑸敤鏉ュ瓨鍌ㄤ腑鏂 锛屽瓨鍌ㄨ嫳鏂囩殑鏃跺欐暟閲忎笂浼氭湁鎵鎹熷け銆傚缓璁函鑻辨枃鍜屾暟瀛楃敤char/varchar锛鏈変腑鏂囦娇鐢╪varchar銆傚浜 MyISAM 瀛樺偍寮曟搸鐨...
  • 鏁版嵁搴撲腑varchar銆乶varchar銆乧har瀛樺偍瀛楃銆佹暟瀛椼佹眽瀛楃殑瀹归噺鍖哄埆鏄粈...
    绛旓細涓鑸潵璇村鏋滃惈鏈変腑鏂囧瓧绗︼紝鐢╪varchar锛濡傛灉绾嫳鏂囧拰鏁板瓧锛岀敤char/varchar銆傛暟鎹簱(Database)鏄寜鐓ф暟鎹粨鏋勬潵缁勭粐銆佸瓨鍌ㄥ拰绠$悊鏁版嵁鐨勪粨搴擄紝瀹冧骇鐢熶簬璺濅粖鍏崄澶氬勾鍓嶏紝闅忕潃淇℃伅鎶鏈拰甯傚満鐨勫彂灞曪紝鐗瑰埆鏄簩鍗佷笘绾節鍗佸勾浠d互鍚庯紝鏁版嵁绠$悊涓嶅啀浠呬粎鏄瓨鍌ㄥ拰绠$悊鏁版嵁锛岃岃浆鍙樻垚鐢ㄦ埛鎵闇瑕佺殑鍚勭鏁版嵁绠$悊鐨勬柟寮忋傛暟...
  • char,varchar,nvarchar鏈変粈涔堝尯鍒,鐢ㄦ埛鍚嶅簲璇ョ敤鍝釜,涓轰粈涔
    绛旓細char[(n)]闀垮害涓 n 涓瓧鑺傜殑鍥哄畾闀垮害涓旈潪 Unicode 鐨勫瓧绗︽暟鎹俷 蹇呴』鏄竴涓粙浜 1 鍜 8,000 涔嬮棿鐨勬暟鍊笺傚瓨鍌ㄥぇ灏忎负 n 涓瓧鑺傘俢har 鍦 SQL-92 涓殑鍚屼箟璇嶄负 character銆varchar[(n)]闀垮害涓 n 涓瓧鑺傜殑鍙彉闀垮害涓旈潪 Unicode 鐨...
  • 璧勬枡搴撲腑varchar銆乶varchar銆乧har鍌ㄥ瓨瀛楀厓銆佹暟瀛椼佹眽瀛楃殑瀹归噺鍖哄埆_鐧 ...
    绛旓細涓鑸潵璇村鏋滃惈鏈変腑鏂囧瓧鍏冿紝鐢╪varchar锛濡傛灉绾嫳鏂囧拰鏁板瓧锛岀敤char/varchar銆傝祫鏂欏簱(Database)鏄寜鐓ц祫鏂欑粨鏋勬潵缁勭粐銆佸偍瀛樺拰绠$悊璧勬枡鐨勪粨搴擄紝瀹冧骇鐢熶簬璺濅粖鍏崄澶氬勾鍓嶏紝闅忕潃璧勮绉戞妧鍜屽競鍦虹殑鍙戝睍锛岀壒鍒槸浜屽崄涓栫邯涔濆崄骞翠唬浠ュ悗锛岃祫鏂欑鐞嗕笉鍐嶄粎浠呮槸鍌ㄥ瓨鍜岀鐞嗚祫鏂欙紝鑰岃浆鍙樻垚浣跨敤鑰呮墍闇瑕佺殑鍚勭璧勬枡绠$悊鐨勬柟寮忋...
  • SQL鏁版嵁绫诲瀷nchar,char,varchar涓巒varchar鍖哄埆
    绛旓細nchar涓巆har鏄浉浼肩殑锛宯varchar涓varchar鏄浉浼肩殑銆俢har绫诲瀷锛 瀵硅嫳鏂(ASCII)瀛楃鍗犵敤1涓瓧鑺傦紝瀵逛竴涓眽瀛楀崰鐢2涓瓧鑺锛孋HAR瀛樺偍瀹氶暱鏁版嵁寰堟柟渚匡紝CHAR瀛楁涓婄殑绱㈠紩鏁堢巼绾ч珮锛屾瘮濡傚畾涔 char(10)锛岄偅涔堜笉璁轰綘瀛樺偍鐨勬暟鎹槸鍚﹁揪鍒颁簡10涓瓧鑺傦紝閮借鍗犲幓10涓瓧鑺傜殑绌洪棿锛屼笉澶熺殑瀛楃鐢ㄧ┖鏍煎幓濉傚洜涓烘槸鍥哄畾闀垮害...
  • sql 涓璱nt nvarchar char VARchar 鏈変粈涔堝尯鍒
    绛旓細Varchar绫诲瀷锛歏archar 鐨勭被鍨嬩笉浠ョ┖鏍煎~婊★紝鑰Char鍒欎細濉厖婊′负姝,濡varchar(100)锛屼絾瀹冪殑鍊煎彧鏄"qian",鎵浠ュ畠鍦ㄦ暟鎹簱涓瓨鐨勫煎氨鏄"qian",鑰宑har 涓嶄竴鏍凤紝濡俢har(100),瀹冪殑鍊兼槸"qian"锛岃屽疄闄呬笂瀹冨湪鏁版嵁搴撲腑鏄"qian "(qian鍚庡叡鏈96涓┖鏍硷紝灏辨槸鎶婂畠濉弧涓100涓瓧鑺)銆傛敞:鐢变簬char鏄互鍥哄畾...
  • 扩展阅读:oracle varchar2 ... incorrect string value ... dbms lob substr ... tinyint ... mysql varchar ... char 10 ... nvarchar与varchar区别 ... charles&keith是啥牌子 ... mysql ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网