2014-09-23 50 views
0

我有它的傳統中國字符串表,存儲在NVARCHAR2(100)領域 - 例如如何在SQL Developer的查詢的WHERE子句中使用unicode?

一定會

表已經從一個逗號分隔的文本文件,通過導入對話被加載在SQL Developer中。

如果我運行

SELECT column1 
FROM table1; 

我可以看到

一定會

在結果

但是,如果我嘗試

SELECT column1 
FROM table1 
WHERE column1 = '一定會'; 

我得到零行。我看過http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch7progrunicode.htm,但沒有看到任何解釋。

SELECT column1 
FROM table1 
WHERE column1 = N'一定會'; 

回報什麼,而且也不

SELECT column1 
FROM table1 
WHERE column1 = TO_NCHAR('一定會'); 

我需要換行字符串的函數來告訴Oracle解釋Unicode作爲......嗯,Unicode的?

+0

您是否閱讀過您鏈接的內容? * TO_NCHAR函數在運行時轉換數據,而N函數在編譯時轉換數據。 'INSERT INTO customers VALUES(1000, TO_NCHAR('John Smith'),N'500 Oracle Parkway',sysdate);'* – 2014-09-23 08:13:50

+0

是的,但是既不添加TO_NCHAR也不添加N。我會修改這個問題來反映這一點。謝謝 – JamesF 2014-09-23 08:21:01

回答

1

通常,你需要把上N第一分隔符之前告訴通信協議以下字符爲Unicode,因此必須不被翻譯/解釋/轉換等。例如:

Where column1 = N'一定會' 

您不能在N和'

之間放置任何空格
+0

謝謝。我試過了,它仍然沒有結果。 – JamesF 2014-09-23 08:15:12

+0

然後可能是因爲column1不是nchar類型,nvarchar或ntext類型。此外,它正確顯示的事實並不意味着它被正確存儲,因爲寫入錯誤通常會被讀取中的相同類型的錯誤糾正。例如,您可以使用正確或錯誤的編碼方案將此字符串存儲在varchar字段中,但在仍能正確顯示的情況下,您將無法對其進行搜索。 – SylvainL 2014-09-23 08:19:14

+0

column1是nvarchar2(100) - 是nvarchar的子類型,還是你的解決方案不適用? – JamesF 2014-09-23 08:24:39