注意:在SQL SERVER中使用NChar、NVarchar和NText_Mssql數(shù)據(jù)庫(kù)教程
推薦:SQL參數(shù)化查詢的另一個(gè)理由——命中執(zhí)行計(jì)劃1概述 SQL語(yǔ)言的本質(zhì)就是一串偽代碼,表達(dá)的是做什么,而不是怎么做的意思。如其它語(yǔ)言一樣,SQL語(yǔ)句需要編譯之后才能運(yùn)行,所以每一條SQL是需要通過編譯器解釋才能運(yùn)行的(在這之間還要做SQL的優(yōu)化)。而這些步驟都是需要運(yùn)行成本,所以在數(shù)據(jù)庫(kù)中有一個(gè)叫做執(zhí)行計(jì)劃的
前天同事在幫客戶錄數(shù)據(jù)的時(shí)候,發(fā)現(xiàn)有一個(gè)人的名字里有個(gè)“㛃”(念jie,同“潔”)字,但用搜狗拼音和萬(wàn)能五筆都打不出來,我百度了一下,找到了一篇搜狗論壇的建議帖,有人建議搜狗拼音里增加“
”字的輸入,下面跟帖的人貼出了這個(gè)“㛃”字。
既然字已經(jīng)找到,我以為一切OK了,把它復(fù)制到飛秋里發(fā)給同事,竟然顯示的是“?”!這是一個(gè)神馬情況啊?
我立馬又去翻那個(gè)帖子,在下面看到了論壇版主的回復(fù):

貌似是編碼的問題啊,我又把它復(fù)制到一個(gè)新建的記事本里,保存的時(shí)候果然出現(xiàn)了提示:

果然是編碼的問題啊!這時(shí)候,我突然想到,存放姓名的字段用的是varchar型,它能不能存這個(gè)字呢?一試,果然也是一個(gè)問號(hào)!改用nvarchar型字段來存,果斷是沒問題的。查了下SQL SERVER聯(lián)機(jī)叢書,看到varchar同nvarchar的區(qū)別:
除下列情況之外,nchar、nvarchar 和 ntext 的使用分別與 char、varchar 和 text 的使用相同:
Unicode 支持更大范圍的字符。
存儲(chǔ) Unicode 字符需要更大的空間。
nchar 列的最大大小為 4,000 個(gè)字符,與 char 和 varchar 不同,它們?yōu)?8,000 個(gè)字符。
使用最大說明符,nvarchar 列的最大大小為 2^31-1 字節(jié)。有關(guān) nvarchar(max) 的詳細(xì)信息,請(qǐng)參閱使用大值數(shù)據(jù)類型。
Unicode 常量以 N 開頭指定:N'A Unicode string'。
所有 Unicode 數(shù)據(jù)使用由 Unicode 標(biāo)準(zhǔn)定義的字符集。用于 Unicode 列的 Unicode 排序規(guī)則以下列屬性為基礎(chǔ):區(qū)分大小寫、區(qū)分重音、區(qū)分假名、區(qū)分全半角和二進(jìn)制。
SQL SERVER里建表,我一直用的都是varchar,總感覺nvarchar除了存儲(chǔ)中文的時(shí)候在長(zhǎng)度和字符數(shù)上有統(tǒng)一性的好處之外,基本沒有什么需要用到的地方。這回得了教訓(xùn),以后再有錄入人名或是其他可能出現(xiàn)GBK不包含的生僻字的字段,最好還是使用nchar、nvarchar或ntext,以免在后面給程序留坑。
來源:http://www.cnblogs.com/aaa6032/archive/2012/08/12/2632063.html
分享:一列保存多個(gè)ID(將多個(gè)用逗號(hào)隔開的ID轉(zhuǎn)換成用逗號(hào)隔開的名稱)背景:在做項(xiàng)目時(shí),經(jīng)常會(huì)遇到這樣的表結(jié)構(gòu)在主表的中有一列保存的是用逗號(hào)隔開ID。如,當(dāng)一個(gè)員工從屬多個(gè)部門時(shí)、當(dāng)一個(gè)項(xiàng)目從屬多個(gè)城市時(shí)、當(dāng)一個(gè)設(shè)備從屬多個(gè)項(xiàng)目時(shí),很多人都會(huì)在員工表中加入一個(gè)deptIds VARCHAR(1000)列(本文以員工從屬多個(gè)部門為例),用以保
- sql 語(yǔ)句練習(xí)與答案
- 深入C++ string.find()函數(shù)的用法總結(jié)
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- sql刪除重復(fù)數(shù)據(jù)的詳細(xì)方法
- SQL SERVER 2000安裝教程圖文詳解
- 使用sql server management studio 2008 無法查看數(shù)據(jù)庫(kù),提示 無法為該請(qǐng)求檢索數(shù)據(jù) 錯(cuò)誤916解決方法
- SQLServer日志清空語(yǔ)句(sql2000,sql2005,sql2008)
- Sql Server 2008完全卸載方法(其他版本類似)
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server 2008 清空刪除日志文件(瞬間日志變幾M)
- Win7系統(tǒng)安裝MySQL5.5.21圖解教程
- 將DataTable作為存儲(chǔ)過程參數(shù)的用法實(shí)例詳解
Mssql數(shù)據(jù)庫(kù)教程Rss訂閱編程教程搜索
Mssql數(shù)據(jù)庫(kù)教程推薦
- sql server 2008 不允許保存更改,您所做的更改要求刪除并重新創(chuàng)建以下表
- SQL Server中刪除重復(fù)數(shù)據(jù)的幾個(gè)方法
- 解析SQL Server數(shù)據(jù)庫(kù)恢復(fù)操作實(shí)例
- SQL Server 2008數(shù)據(jù)挖掘查詢?nèi)蝿?wù)
- SQL Server中, DateTime (日期)型操作的 SQL語(yǔ)法
- 解決SQL Server 2005數(shù)據(jù)庫(kù)批量更新的辦法
- 解讀改善SQL Server內(nèi)存管理的問題
- SQL Server 2008 數(shù)據(jù)加載創(chuàng)世界記錄
- 怎樣用SQL Server事件探查器創(chuàng)建跟蹤
- SQL Server2000安裝時(shí)出現(xiàn)錯(cuò)誤及解決
猜你也喜歡看這些
- Mysql select in 按id排序?qū)崿F(xiàn)方法
- Mysql的主從數(shù)據(jù)庫(kù)沒有同步的解決辦法
- mysql中text與varchar與char的區(qū)別
- sql語(yǔ)句:拷貝表,復(fù)制表
- 網(wǎng)站模板:利用Shell腳本實(shí)現(xiàn)遠(yuǎn)程MySQL自動(dòng)查詢
- 總結(jié)MySQL建表、查詢優(yōu)化的一些實(shí)用小技巧
- MySQL筆記之子查詢使用介紹
- mysql錯(cuò)誤及解決全攻略
- 模板無憂:mysql數(shù)據(jù)庫(kù)優(yōu)化總結(jié)
- 使用MySQL Slow Log來解決MySQL CPU占用高的問題
- 相關(guān)鏈接:
- 教程說明:
Mssql數(shù)據(jù)庫(kù)教程-注意:在SQL SERVER中使用NChar、NVarchar和NText
。