搞懂oracle字符集的幾個要點
1樓:懂視生活
經常會遇到一些ldquo;為什麼我的查詢顯示亂碼?rdquo;或者ldquo;為什麼我匯入後中文變成亂碼?rdquo;的問題,如果想徹底搞懂。
經常會遇到一些「為什麼我的查詢顯示亂碼?」或者「為什麼我匯入後中文變成亂碼?」的問題,如果想徹底搞懂原因,需要研究下oracle的字符集以及他們之間的轉換的關係,還有os字符集、nls_lang跟資料庫字符集的關係。
簡單的總結下磨鎮要搞懂的幾個要點:弊吵。
1. nls_lang資料庫:保證字元相同,儲存的2進位可變。
osnls_lang:儲存的2進位不變,字元可能顯示不同。
2. 如果nls_lang設定成跟資料庫字符集一樣,則通過oracle net傳遞資料時儲存的2進位不會發生轉換。如果不一樣,則會發生轉換。
3. nls_lang並不是我們以為的用來顯示給我們的字元的編碼,真正用來顯示的編碼是os編碼,所以如果nls_lang跟os編碼不一樣時,同乙個2進位串可能就會由本來的『你』顯示成『靠』。
4. 向資料庫傳遞字元時應儘量將nls_lang設定成os字符集,以保證輸入的『我』到nls_lang一層不會發生字元變化,,從而保證到資料庫端儲存的就是『我』;
不過使用exp等客戶端工具匯出時,應儘量將nls_lang設定成資料庫字符集,以保證匯出時資料原封不動,不會發生瞎卜粗資料丟失的可能。匯入時也應儘量將nls_lang設成匯出檔案的字符集,以保證將轉換移至傳輸到資料庫的一步。(exp,imp也可能會發生資料丟失問題,具體要看源資料庫,exp客戶端nls_lang,imp客戶端nls_lang,目標資料庫的字符集)
5.其實亂碼,說到底就是用於顯示字元的作業系統沒有在字元編碼中找到對應的字元導致的,也並不是只要將nls_lang設定成資料庫字符集就可以避免亂碼的。
貼兩張eygle的轉換圖:
跪求c語言字串處理函式,跪求 c語言字串 7個處理函式
1.字串連線函式 strcat 原型 char strcat char str1,const char str2 2.字串查詢函式 strchr 原型 char strchr const char str1,const char str2 3.字串比較函式 strcmp 原型 int strcmp ...
SQL函式怎樣算出字串逗號隔開的字串數量
我是這樣想的,想計算出 逗號在 字串中出現的次數,再加一,就是了。sql select length a,7,34,4,bb length replace a,7,34,4,bb 1 from dual length a,7,34,4,bb length r 5 sql中可以自定義函式來統計逗號隔開...
Oracle字串的拆分和拼接,Oracle字串的拆分和拼接
如果是固定的格式,那就好辦,檢測欄位中的 分割成四段,然後按要求接起來。使用函式好些,可以直接呼叫。函式寫好 已經測試過。create or replace function json montage json in varchar2 return varchar2 is in json varch...