在SQL 2005中用T-SQL插入中文數據時出現的問號或亂碼的解決方案

在SQL 2005中用T-SQL插入中文數據時出現的問號或亂碼的解決方案
2009-05-21 23:34

病症表現爲:主要表現爲用T-sql語句插入中文數據時數據庫顯示全是問號“???”
解決辦法:

第一種辦法:先選中出錯的數據庫→選中以後右鍵點擊屬性會彈出數據庫屬性 對話框→選中數據庫屬性對話框中的選項→把選項中的排序規則設置成:Chinese_PRC_90_CI_AS→最後點擊確定即可。
注意:在選擇數據庫屬性的時候必須確保你所修改的數據庫未被使用纔可以修改否則會失敗的

第二種辦法:首先打開你的sql查詢分析器(新建查詢),然後輸入以下代碼執行即 可:ALTER DATABASE 數據庫名 COLLATE Chinese_PRC_90_CI_AS
例如:

ALTER DATABASE 9NPC COLLATE Chinese_PRC_CI_AI

ALTER DATABASE AutoUpgrade COLLATE Chinese_PRC_CI_AI

解析原因:出現以上情況主要是因爲數據庫屬性的排序規則設置不正確,在Microsoft SQL Server 2005 中,字符串的物理存儲由排序規則控制。排序規則指定表示每個字符的位模式以及存儲和比較字符所使用的規則。
排序規則名稱由兩部份構成,前半部份是指本排序規則所支持的字符集。
如:
  Chinese_PRC_90_CI_AS

前半部份:指UNICODE字符集,Chinese_PRC_指針對大陸簡體字UNICODE的排序規則。
排序規則的後半部份即後綴 含義:
  _BIN 二進制排序
  _CI(CS) 是否區分大小寫,CI不區分,CS區分
  _AI(AS) 是否區分重音,AI不區分,AS區分   
  _KI(KS) 是否區分假名類型&defKI不區分,KS區分 
_WI(WS) 是否區分寬度 WI不區分,WS區分 

區分大小寫:如果想讓比較將大寫字母和小寫字母視爲不等,請選擇該選項。
區分重音:如果想讓比較將重音和非重音字母視爲不等,請選擇該選項。如果選擇該選項,比較還將重音不同的字母視爲不等。
區分假名:如果想讓比較將片假名和平假名日語音節視爲不等,請選擇該選項。
區分寬度:如果想讓比較將半角字符和全角字符視爲不等,請選擇該選項(完)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章