mysql中nchar_淺談SQL Server、MySQL中char,varchar,nchar,nvarchar區別

1,定義:

char:??? 固定長度,存儲ANSI字符,不足的補英文半角空格。

nchar:?? 固定長度,存儲Unicode字符,不足的補英文半角空格

varchar:? 可變長度,存儲ANSI字符,根據數據長度自動變化。

nvarchar: 可變長度,存儲Unicode字符,根據數據長度自動變化。

nvarchar(n) :包含 n個字符的可變長度 Unicode 字符數據。n 的值必須介于 1? 與? 4,000 之間。字節的存儲大小是所輸入字符個數的兩倍。所輸入的數據字符長度可以為零。

varchar[(n)]:長度為 n 個字節的可變長度且非 Unicode的字符數據。n 必須是一個介于?? 1 和 8,000之間的數值。存儲大小為輸入數據的字節的實際長度,而不是 n 個字節。所輸入的數據字符長度可以為零。

注意: ANSI主要是以單字節來存儲數據,一般適合英文。而我們常用的漢字需要用兩個字節來存儲,所以就要使用unicode的數據類型,不然讀取出來的數據可能會亂碼。

2,區別:

①從存儲方式上,nvarchar是按字符存儲的,而 varchar是按字節存儲的;

②從存儲量上考慮, varchar比較節省空間,因為存儲大小為字節的實際長度,而 nvarchar是雙字節存儲;

③在使用上,如果存儲內容都是英文字符而沒有漢字等其他語言符號,建議使用varchar;含有漢字的使用nvarchar,因為nvarchar是使用Unicode編碼,即統一的字符編碼標準,會減少亂碼的出現幾率;

④?? 如果你做的項目可能涉及不同語言之間的轉換,建議用nvarchar。

3,優缺點:

Nvarchar優點:判斷字符串的時候可以不需要考慮中英文兩種字符的差別,可以避免程序中亂碼的問題。

缺點:存儲英文字符會增大一倍的存儲空間.但是在存儲代價已經很低廉的情況下,優先考慮兼容性會給你帶來更多好處的,效率沒有varchar高。

4,為什么要用nvarchar?

有n前綴的,n表示Unicode字符,即所有字符都占兩個字節,nchar,nvarchar

字符中,英文字符只需要一個字節存儲就足夠了,但漢字眾多,需要兩個字節存儲,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不兼容的問題而產生的,它所有的字符都用兩個字節表示,即英文字符也是用兩個字節表示。

5,有關var的簡單介紹:

有var前綴的,表示是實際存儲空間是變長的,varchar,nvarchar

所謂定長就是長度固定的,當輸入的數據長度沒有達到指定的長度時將自動以英文空格在其后面填充,使長度達到相應的長度;而變長字符數據則不會以空格填充,比較例外的是,text存儲的也是可變長。

6,如何使用這些類型?

如果你肯定存儲的數據長度,而且不包中文的,可以選擇char類型。

如果肯定存儲的數據長度,但可能包括中文,可以選擇nchar類型。

如果不確定存儲的數據長度,存儲只有英文、數字的最好用varchar

如果不確定存儲的數據長度,也有可能有中文,可以選擇nvarchar類型,在SQL Server2005中也是比較常用的字符數據類型。

二,MySQL中char,varchar,nchar,nvarchar的區別(援引:http://blog.csdn.net/ivanluc/article/details/5174536)

mysql中char、varchar、nvarchar數據類型的用法區別:

1、char:

固定長度的非 Unicode 字符數據,最大長度為 8,000 個字符。

2、varchar:

可變長度的非 Unicode 數據,最長為 8,000 個字符。

3、nvarchar:

可變長度 Unicode 數據,其最大長度為 4,000 字符。

4、nchar

固定長度的 Unicode 數據,最大長度為 4,000 個字符。

5、char和varchar都是字符串類型的

用Unicode編碼的字符串,結果是字符的整數值

用法區別:

文字字段若長度固定,如:身分證號碼,就不要用 varchar 或 nvarchar,應該用 char 或 nchar。

支持多語言的站點應考慮使用 Unicode nchar 或 nvarchar 數據類型以盡量減少字符轉換問題

文字字段若長度不固定,如:地址,則該用 varchar 或 nvarchar。除了可節省存儲空間外,存取硬盤時也會較有效率。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443088.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443088.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443088.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mysql 5.764_RHEL5.764位源碼編譯安裝MySQL-5.5.42遇到的問題

由于MySQL從5.5之后的版本源碼編譯安裝用cmake, make, make install安裝,不用./Configure,make,make install 安裝,所以要看下系由于MySQL從5.5之后的版本源碼編譯安裝用cmake, make, make install安裝,不用./Configure,make,make install 安裝,所以要看…

java 判斷子類_java判斷class是否是某個類的子類或父類

Class c = ArrayList.class; c.isPrimitive(); //判斷c是否為基本數據類型 c.isAssignableFrom(List.class); //判斷c是否是List類的子類或父類 c.getGenericType(); //得到泛型類型 免費學習視頻分享:java視頻教程 實例:通過反射得到List 集合中的泛型類型package com.zf.ta…

java轉日期_Java時間日期格式轉換

import java.util.*;import java.text.*;importjava.util.Calendar;public classVeDate {/*** 獲取現在時間**return返回時間類型 yyyy-MM-dd HH:mm:ss*/public staticString getNowDate() {Date currentTime newDate();SimpleDateFormat formatter new SimpleDateFormat("…

java 對比工具_Java幾款性能分析工具的對比

在給客戶進行應用程序維護的過程中,我注意到一些關于高負載條件下的性能問題。理論上,增加對應用程序的負載會使性能有所下降,但是我認為性能下降的比率遠遠高于負載的增加,同時我也發現,性能可以通過改變應用程序的邏…

java for循環獲取value_Java遍歷取出Map集合key-value數據的4種方法

將map集合存數據與取出數據全部放在一個類MapTest中,方便閱讀與查看隨便創建一個包,在包中新建一個class文件,(也可以不建包,直接新建一個class文件)新建class文件MapTest.java,代碼如下:import java.util.HashMap;imp…

as3調用java_關于openamf我用as3鏈接java程序,并調用相關的方法,但是能夠連上,卻不能夠調用是怎么回事...

我用的openamf做flashremoting服務器是沒問題的!這是as的代碼!package{importflash.display.Sprite;importflash.net.ObjectEncoding;importcom.riafan.remoting.PendingCall;import...我用的openamf做flash remoting服務器是沒問題的!這是as…

phoenix hbase java_java jdbc訪問hbase phoenix

上面直接介紹了druid訪問hbase phoenix的案例hbase Phoenix整合mybatis DruidDataSource這里還是貼一下jdbc直接訪問的方式。public static void main(String[] args) {try {Class.forName("org.apache.phoenix.jdbc.PhoenixDriver");Properties propertiesnew Prope…

mp4v2 寫mp4 java_使用mp4v2將H264+AAC合成mp4文件

錄制程序要添加新功能:錄制CMMB電視節目,我們的板卡發送出來的是RTP流(H264視頻和AAC音頻),錄制程序要做的工作是:(1)接收并解析RTP包,分離出H264和AAC數據流;(2)將H264視頻和AAC音頻以某種格式封裝&#x…

java完全解耦_java-完全解耦

完全解耦:降低代碼的限制性,是同一代碼能夠用到更多的程序中1 packageinterfaces.interfaceprocessor;2 import staticnet.mindview.util.Print.print;34 interfaceProcessor {5 String name();6 Object process(Object input);7 }8 public classApply{9…

java驗證xml格式是否正確的是_spring源碼附錄(1)java實現對XML格式的驗證

最近在看spring源碼,涉及到xml文檔的解析、xml文檔的格式驗證,發現自己對xml解析的基礎較為薄弱,本篇博客復習下DOM方式解析xml(即spring解析xml的方式)。DOM解析XML是將整個XML作為一個對象,占用內存較多。另外一個java官方的XML…

java 批量打印_JAVA批量打印皕杰報表

原標題:JAVA批量打印皕杰報表不使用皕杰報表工具條上的打印按鈕,用java怎么實現批量打印皕杰報表呢?解決方案:皕杰報表提供了批量打印的工具類ReportToolkits,ReportToolkits類參考幫助文檔-開發指南-javadoc-bios.rep…

java 截串_java字符串截取

import org.apache.commons.lang.stringutils;public class substr{public static void main(string[] args) {string str "1234567890abcdefg";system.out.println("-----------" str.substring(0)); //從字符串索引為0開始截取,一直到字符串…

java json 構造_json 構造和解析

目錄:(1)引入jar包;(2)json的構造;(3)json的解析;(4)遍歷未知key。(1)java對json的處理,可借助org.json.jar.org.jsonjson20090211(2)json的構造//construct json and output itpublic String constructJson() throws …

java http 上傳文件_java利用httpClient實現后臺文件上傳請求

之前寫過基于html和js的文件上傳方法java 用springMVC 和HttpServletRequest 兩種實現文件上傳的方法和httpClient后臺執行普通post請求的文章java通過httpClient從接口請求數據入庫以及自動生成實體工具類,最近接到一個需求,需要用到后臺去調用遠程服務…

morse java_華威MORSE,華威數統那個比較好?

其實沒什么高下之分了。 畢竟大家都在一個系,上下課交作業都在一起。我個人覺得,數統要比morse更flexible一些。首先你要明白morse和數統課程上的區別在哪里:數統 大一必修數統大一必修共計84CATSmorse大一必修morse大一必修共計120CATS其實差的就是EC10…

java中 以下接口以鍵_java復習題

1.Java中的long類型占用()個字節。A、1B、2C、4D、82.以下關于繼承的敘述不正確的是()。A、在Java中類只允許單一繼承B、在Java中一個類只能實現一個接口C、在Java中一個類可以同時繼承一個類和實現一個接口D、在Java中接口允許多繼承3.4&…

Java游戲有易筋經_易筋經- JavaWeb-1

JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基于原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用于客戶端的腳本語言組成部分:ECMAScript:js基礎語法(規定 關鍵字 運算符 語句 函數…

java導出hbase表數據_通用MapReduce程序復制HBase表數據

編寫MR程序,讓其可以適合大部分的HBase表數據導入到HBase表數據。其中包括可以設置版本數、可以設置輸入表的列導入設置(選取其中某幾列)、可以設置輸出表的列導出設置(選取其中某幾列)。原始表test1數據如下:每個row key都有兩個版本的數據,…

java雙語試卷_Java程序設計基礎(雙語)試題題目及答案,課程2021最新期末考試題庫,章節測驗答案...

若二項式(x+13x)n的展開式中含3x的項是第三項,則n的值是______.(x2+1ax)6(a>0)的展開式中常數項是15,那么展開式中所有項系數和是______.(x2+1ax)6(a>0)的展開式中常數項…

java服務器和linux_在Linux下開一個Java服務器(使用CatServer Pro)

引言Linux開服具有快速,高效,性能等特點,而Windows雖然簡單,但是不具備Linux良好的性能。本教程就說明一下簡單的Linux開服方式(需要教程的人,如果你學會后,請無償幫助更多的人。)服務器準備首先。先準備一…