[SQL]SELECT資料時,資料內有特殊中文字時的解決方式

  • 36066
  • 0
  • 2010-08-02

SELECT 特殊中文字時,資料庫確定有此資料,但 SELECT 出不來,例如凃、喆等字

 

一、問題描述

當資料庫裡有特殊的中文字,例如凃、喆等,這以下語法取不出欄位NAME = '凃' 的資料,該如何處理 ?

SELECT * FROM [TABLENAME] WHERE [NAME] = '凃'

 

二、解決方式

在字串前加上大寫 N,指定字串格式為 Unicode 字串即可

SELECT * FROM [TABLENAME] WHERE [NAME] = N'凃'

 

以下為擷取自 MSDN 中 常數 (Transact-SQL) 內的說明

Unicode 字串的格式類似於字元字串,但前面附加了 N 識別碼 (N 代表 SQL-92 標準中的國家 (地區) 語言)。N 前置詞必須是大寫。例如,'Michél' 是一個字元常數,N'Michél' 則是 Unicode 常數。Unicode 常數會解譯成 Unicode 資料,並不會用字碼頁來評估。Unicode 常數有定序。這個定序主要用來控制比較和區分大小寫。除非利用 COLLATE 子句來指定定序,否則,Unicode 常數會被指派目前資料庫的預設定序。Unicode 資料是利用每個字元 2 位元組來儲存的,而不是字元資料的每個字元 1 個位元組

 

三、測試