1.在oracle中欄位中找出漢字的方法:可以利用length(testname)和lengthb(testname),其中length(testname)不論數字或者字元都算一個, 而lengthb則不同,比如說testname的值為:54看法12,用length(testname)的值為6,而lengthb(testname)的值為:8。 利用這個就可以非常清楚的判斷一個字元中是否包含漢字了(字母除外)。
to_single_byte(c)轉換成半形 to_multi_byte(c)轉換成全形 執行個體: SELECT '12345', DUMP('12345'), TO_SINGLE_BYTE('12345'), DUMP(TO_SINGLE_BYTE('12345')) FROM dual;
12345 Typ=96 Len=10: 163,177,163,178,163,179,163,180,163,181 12345 12345 Typ=1 Len=5: 49,50,51,52,53
實際例子:
select * from TB_SHINTECH_IQC_BASE_INFO 報錯:ORA-29275 解決方案如下: 方法一: select mtrl_id,DEF_STATE,lengthb(DEF_STATE),lengthb(TO_SINGLE_BYTE(DEF_STATE)) from TB_SHINTECH_IQC_BASE_INFO where lengthb(DEF_STATE)<>lengthb(TO_SINGLE_BYTE(DEF_STATE))
update TB_SHINTECH_IQC_BASE_INFO set DEF_STATE=TO_SINGLE_BYTE(DEF_STATE) where lengthb(DEF_STATE)<>lengthb(TO_SINGLE_BYTE(DEF_STATE))
select addr from test_app 如果addr中有半個中文字元則會報這個異常,原因為Oracle編碼問題。 解決方案二:開發改SQL語句 select to_nchar(addr) from test_app