天天看點

oracle nvarchar2 字元集不比對,Oracle中NVARCHAR2字元集不比對問題

Oracle中在做字元比對時 遇到 NVARCHAR2 類型時報錯,提示 字元集不比對。

對使用 NVARCHAR2 的地方,需要對字段進行字元轉換,加上 to_char(nvarchar2 字段) 即可。

例如:

SELECT substr(bm.matnr, 3) wlbm, ms.maktx wlms, bm.meins jldw, bm.matkl wlz

, bm.normt gybzms,bm.laeda gxsj,(case to_char(trim(bm.lvorm)) when ‘X‘ then ‘0‘ else ‘1‘ end) WLZT

FROM makt ms, mara bm

WHERE ms.matnr = bm.matnr;

VARCHAR2是Oracle提供的特定資料類型,Oracle可以保證VARCHAR2在任何版本中該資料類型都可以向上和向下相容。

VARCHAR在Oracle中不建議使用。

NVARCHAR2和VARCHAR2的差別:

從使用角度來看差別在于:NVARCHAR2在計算長度時和字元集相關的,例如資料庫是中文字元集時以長度10為例,則

1、NVARCHAR2(10)是可以存進去10個漢字的,如果用來存英文也隻能存10個字元。

2、而VARCHAR2(10)的話,則隻能存進5個漢字,英文則可以存10個。

原文:http://www.cnblogs.com/zxpsl/p/4993009.html