2016-05-03 116 views
0

I know字符串需要在SQL Server(2012)INSERT語句前加N'作爲UNICODE存儲它們,但是它們是否必須以某種方式檢索(SELECT語句)他們在UNICODE?從SQL Server中讀取Unicode字符串

我能夠用N符號正確地存儲國際字符串,但是當我運行SELECT查詢來取回記錄時,它會出現問號。我的查詢非常簡單。

SELECT COLUMN1, COLUMN2 FROM TABLE1 

我在看可能導致此問題的其他可能的原因,但至少我想消除上面的SQL語句。當它們都使用N表示法存儲UNICODE字符串時它是否應該正確讀取COLUMN1和COLUMN2列?我必須對聲明做任何事情才能告訴它它們是UNICODE嗎?

+0

'它來問號'SQL Server Management Studio或您的應用程序?檢查它是否適用於SSMS,如果是,那麼你的應用程序可能無法正確讀取數據(驅動程序,編碼,...) – lad2025

+0

@ lad2025我的應用程序 – zar

回答

0

您的代碼應該在SSMS中正常工作。如果不是,請嘗試以下操作:

SELECT UNICODE(COLUMN1), UNICODE(COLUMN2) FROM TABLE1 

轉換在應用程序代碼中失敗。一定要重新審視它。

0

在管理工作室中,您不需要執行任何特殊的操作來顯示正確的值。確保表中的列被定義爲Unicode字符串NVARCHAR,而不是ANSI字符串VARCHAR。

下面的例子說明的概念:

CREATE TABLE UnicodeExample 
    (
     MyUnicodeColumn NVARCHAR(100) 
     ,MYANSIColumn VARCHAR(100) 
    ) 

    INSERT INTO UnicodeExample 
    (
     MyUnicodeColumn 
     ,MYANSIColumn 
    ) 
    VALUES 
    (
     N'איש' 
     ,N'איש' 
    ) 

    SELECT * 
    FROM UnicodeExample 

    DROP TABLE UnicodeExample 

在上面的例子列MyUnicodeColumn被定義爲一個nvarchar(100)和MYANSIColumn被定義爲VARCHAR(100)。查詢將正確返回MyUnicodeColumn的結果,但將返回?爲MYANSIColum。

相關問題