SQL SERVER中生成的語句中,字串前加N。N 字首必須是大寫字母。是Unicode編碼的意思,一般來說,英文字元是一個位元組組成,但是國際上的字太多了,因此就用兩個位元組來表示字元,滿足國際化的需要.在字串前面加上 N 代表存入資料庫時以 Unicode 格式儲存。N"string" 表示string是個Unicode字串Unicode 字串的格式與普通字串相似,但它前面有一個 N 識別符號(N 代表 SQL-92 標準中的國際語言 (National Language))。N 字首必須是大寫字母。例如,"Michél" 是字串常量而 N"Michél" 則是 Unicode 常量。Unicode 常量被解釋為 Unicode 資料,並且不使用內碼表進行計算。Unicode 常量確實有排序規則,主要用於控制比較和區分大小寫。為 Unicode 常量指派當前資料庫的預設排序規則,除非使用 COLLATE 子句為其指定了排序規則。Unicode 資料中的每個字元都使用兩個位元組進行儲存,而字元資料中的每個字元則都使用一個位元組進行儲存。有關更多資訊,請參見使用 Unicode 資料。Unicode 字串常量支援增強的排序規則。select """a""" --輸出"a" 在sql語句中"用""來轉義,其他字元可以直接輸儲存含有中文字元的最好有nvarchar儲存只有英文、數字的最好用varchar1.有var字首的,表示是實際儲存空間是變長的,varchar,nvarchar 所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元資料則不會以空格填充,比較例外的是,text儲存的也是可變長。 2.有n字首的,n表示Unicode字元,即所有字元都佔兩個位元組,nchar,nvarchar 字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。 3.基於以上兩點來看看欄位容量 char,varchar 最多8000個英文,4000個漢字 nchar,nvarchar 可儲存4000個字元,無論英文還是漢字 varchar與nvarchar的選擇("n"字首) 使用varchar儲存含有非英文字元(比如中文,日文)時出現“??”的亂碼 使用nvarchar的一個非常好處就是在判斷字串的時候可以不需要考慮中英文兩種字元的差別. 當然,使用nvarchar儲存英文字元會增大一倍的儲存空間.但是在儲存代價已經很低廉的情況下,優先考慮相容性會給你帶來更多好處的. 所以在Design的時候應該儘量使用nvarchar來儲存資料.只有在你確保該欄位不會儲存中文的時候,才採用varchar來儲存. SqlServer中nvarchar和varchar的區別 1、各自的定義:1.nvarchar(n) : 包含 n 個字元的可變長度 Unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為零。 2.varchar[(n)]: 長度為 n 個位元組的可變長度且非 Unicode 的字元資料。n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。所輸入的資料字元長度可以為零。2、區別:1.從儲存方式上,nvarchar是按字元儲存的,而 varchar是按位元組儲存的;2.從儲存量上考慮, varchar比較節省空間,因為儲存大小為位元組的實際長度,而 nvarchar是雙位元組儲存;3.在使用上,如果儲存內容都是英文字元而沒有漢字等其他語言符號,建議使用varchar;含有漢字的使用nvarchar,因為nvarchar是使用Unicode編碼,即統一的字元編碼標準,會減少亂碼的出現機率;4.如果你做的專案可能涉及不同語言之間的轉換,建議用nvarchar。
SQL SERVER中生成的語句中,字串前加N。N 字首必須是大寫字母。是Unicode編碼的意思,一般來說,英文字元是一個位元組組成,但是國際上的字太多了,因此就用兩個位元組來表示字元,滿足國際化的需要.在字串前面加上 N 代表存入資料庫時以 Unicode 格式儲存。N"string" 表示string是個Unicode字串Unicode 字串的格式與普通字串相似,但它前面有一個 N 識別符號(N 代表 SQL-92 標準中的國際語言 (National Language))。N 字首必須是大寫字母。例如,"Michél" 是字串常量而 N"Michél" 則是 Unicode 常量。Unicode 常量被解釋為 Unicode 資料,並且不使用內碼表進行計算。Unicode 常量確實有排序規則,主要用於控制比較和區分大小寫。為 Unicode 常量指派當前資料庫的預設排序規則,除非使用 COLLATE 子句為其指定了排序規則。Unicode 資料中的每個字元都使用兩個位元組進行儲存,而字元資料中的每個字元則都使用一個位元組進行儲存。有關更多資訊,請參見使用 Unicode 資料。Unicode 字串常量支援增強的排序規則。select """a""" --輸出"a" 在sql語句中"用""來轉義,其他字元可以直接輸儲存含有中文字元的最好有nvarchar儲存只有英文、數字的最好用varchar1.有var字首的,表示是實際儲存空間是變長的,varchar,nvarchar 所謂定長就是長度固定的,當輸入的資料長度沒有達到指定的長度時將自動以英文空格在其後面填充,使長度達到相應的長度;而變長字元資料則不會以空格填充,比較例外的是,text儲存的也是可變長。 2.有n字首的,n表示Unicode字元,即所有字元都佔兩個位元組,nchar,nvarchar 字元中,英文字元只需要一個位元組儲存就足夠了,但漢字眾多,需要兩個位元組儲存,英文與漢字同時存在時容易造成混亂,Unicode字符集就是為了解決字符集這種不相容的問題而產生的,它所有的字元都用兩個位元組表示,即英文字元也是用兩個位元組表示。 3.基於以上兩點來看看欄位容量 char,varchar 最多8000個英文,4000個漢字 nchar,nvarchar 可儲存4000個字元,無論英文還是漢字 varchar與nvarchar的選擇("n"字首) 使用varchar儲存含有非英文字元(比如中文,日文)時出現“??”的亂碼 使用nvarchar的一個非常好處就是在判斷字串的時候可以不需要考慮中英文兩種字元的差別. 當然,使用nvarchar儲存英文字元會增大一倍的儲存空間.但是在儲存代價已經很低廉的情況下,優先考慮相容性會給你帶來更多好處的. 所以在Design的時候應該儘量使用nvarchar來儲存資料.只有在你確保該欄位不會儲存中文的時候,才採用varchar來儲存. SqlServer中nvarchar和varchar的區別 1、各自的定義:1.nvarchar(n) : 包含 n 個字元的可變長度 Unicode 字元資料。n 的值必須介於 1 與 4,000 之間。位元組的儲存大小是所輸入字元個數的兩倍。所輸入的資料字元長度可以為零。 2.varchar[(n)]: 長度為 n 個位元組的可變長度且非 Unicode 的字元資料。n 必須是一個介於 1 和 8,000 之間的數值。儲存大小為輸入資料的位元組的實際長度,而不是 n 個位元組。所輸入的資料字元長度可以為零。2、區別:1.從儲存方式上,nvarchar是按字元儲存的,而 varchar是按位元組儲存的;2.從儲存量上考慮, varchar比較節省空間,因為儲存大小為位元組的實際長度,而 nvarchar是雙位元組儲存;3.在使用上,如果儲存內容都是英文字元而沒有漢字等其他語言符號,建議使用varchar;含有漢字的使用nvarchar,因為nvarchar是使用Unicode編碼,即統一的字元編碼標準,會減少亂碼的出現機率;4.如果你做的專案可能涉及不同語言之間的轉換,建議用nvarchar。