2011-05-16 38 views
3

我作爲Oracle字符編碼

CREATE MATERIALIZED VIEW MY_MVIEW 
AS 
SELECT col1 AS "N° INVOICE" from TABLE 

的MVIEW開發服務器上MVIEW已安裝PROD服務器上,當我檢查其查詢我有°無法識別characther

SELECT query from user_mviews where mview_name = 'MY_MVIEW' ; 

QUERY 
--------------------------------------- 
SELECT col1 AS "N? INVOICE" from TABLE 

我們使用Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production 兩種環境。

任何想法爲什麼發生這種情況,以及如何糾正它?或者我需要重命名我的別名?

回答

5

只要您看到問號而不是特殊字符,就意味着客戶端的字符集不支持該字符,並且轉換不可用。

轉換髮生在數據庫字符集作爲源和客戶端字符集作爲目標。環境變量NLS_LANG可讓您控制客戶端字符集。必須在連接打開之前設置NLS_LANG,並且在會話期間不能更改它。

有關NLS_LANG更多信息,請參閱Oracle® Database Globalization Support Guide

BTW,NLS_LANGUAGE無關與字符集!它僅控制服務器消息和區域設置中使用的語言。

4

我肯定會推薦將你的別名重命名爲NO_INVOICE這樣的簡單類,它不包含任何不尋常的字符,也不需要嵌入雙引號引用。將列名稱視爲格式化報表標題是不恰當的 - 在報表中執行此操作。對於像這樣的非標準字符,您將遇到像NLS_LANG這樣的不同環境設置的問題。

+0

感謝託尼,它也是我的建議,但我也想知道爲什麼發生這種情況的原因是 – mcha 2011-05-16 09:50:30

+0

-1提及與字符集問題有關的NLS_LANGUAGE。 NLS_LANG負責。 – 2011-05-16 10:37:34

+0

更正。謝謝。 – 2011-05-16 10:40:40