Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

कॉलम के लिए कैरेक्टर सेट को परिभाषित करना ऑरैकल डेटाबेस टेबल के लिए

सरल उत्तर यह है कि, MySQL के विपरीत, वर्ण सेट को स्तंभ (या तालिका) स्तर . लैटिन1 एक मान्य Oracle कैरेक्टर सेट भी नहीं है।

कैरेक्टर सेट पूरे डेटाबेस में संगत होते हैं और जब आप डेटाबेस बनाते हैं तो उन्हें निर्दिष्ट किया जाएगा। आप NLS_DATABASE_PARAMETERS को क्वेरी करके अपने चरित्र का पता लगा सकते हैं। कोड> ,

select value
  from nls_database_parameters
 where parameter = 'NLS_CHARACTERSET'

संभावित वर्ण सेट की पूरी सूची 11g के लिए उपलब्ध है। r2 और 9i के लिए या आप V$NLS_VALID_VALUES<को क्वेरी कर सकते हैं /कोड>

ALTER SESSION का उपयोग करना संभव है कथन NLS_LANGUAGE सेट करने के लिए या NLS_TERRITORY , लेकिन दुर्भाग्य से आप चरित्र सेट के लिए ऐसा नहीं कर सकते। मेरा मानना ​​है कि ऐसा इसलिए है क्योंकि भाषा बदलने से Oracle डिस्प्ले . का तरीका बदल जाता है कैरेक्टर सेट को बदलते समय संग्रहित डेटा Oracle के स्टोर के तरीके को बदल देगा डेटा।

डेटा प्रदर्शित करते समय, आप निश्चित रूप से जिस भी क्लाइंट का उपयोग कर रहे हैं उसमें आवश्यक वर्ण सेट निर्दिष्ट कर सकते हैं।

कैरेक्टर सेट माइग्रेशन कोई मामूली काम नहीं है और इसे हल्के में नहीं किया जाना चाहिए।

थोड़ा सा ध्यान दें कि आप लैटिन 1 का उपयोग करने का प्रयास क्यों कर रहे हैं? UTF-8 (अन्यथा AL32UTF8 के रूप में जाना जाता है) में एक नया डेटाबेस स्थापित करना अधिक सामान्य होगा - UTF8 . का उपयोग न करें ) या UTF-16 ताकि आप बहु-बाइट डेटा को प्रभावी ढंग से संग्रहीत कर सकें। यहां तक ​​​​कि अगर आपको अभी इसकी आवश्यकता नहीं है, तो यह प्रयास करना बुद्धिमानी है - जीवन में कोई गारंटी नहीं - भविष्य में अपने डेटाबेस को भविष्य में माइग्रेट करने की आवश्यकता के बिना प्रमाणित करने के लिए।

यदि आप डेटाबेस में अलग-अलग कॉलम के लिए अलग-अलग वर्ण सेट निर्दिष्ट करना चाहते हैं तो बेहतर विकल्प यह निर्धारित करना होगा कि क्या यह आवश्यकता वास्तव में आवश्यक है और इसे हटाने का प्रयास करना है। यदि यह निश्चित रूप से आवश्यक है तो आपका सबसे अच्छा दांव एक ऐसे चरित्र सेट का उपयोग करना हो सकता है जो सभी संभावित चरित्र सेटों का सुपरसेट हो। फिर, किसी प्रकार की चेक बाधा है जो कॉलम को विशिष्ट हेक्स मानों तक सीमित करती है। मैं ऐसा करने की बिल्कुल भी सिफारिश नहीं करूंगा, गलतियों की संभावना बहुत अधिक है और यह बेहद जटिल है। इसके अलावा, अलग-अलग वर्ण सेट अलग-अलग हेक्स मानों को अलग-अलग प्रस्तुत करते हैं। बदले में, इसका मतलब है कि आपको यह लागू करने की आवश्यकता है कि एक कॉलम एक विशिष्ट चरित्र में प्रस्तुत किया गया है, जो असंभव है क्योंकि यह डेटाबेस के दायरे से बाहर है।

<उप>1. मुझे स्थिति जानने में दिलचस्पी होगी




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01722:इकाई फ्रेमवर्क पर अमान्य संख्या

  2. SQLBLANKLINES सेट करें:SQLcl और SQL* Plus में खाली लाइनों की अनुमति कैसे दें

  3. संचयी विश्लेषणात्मक कार्यों का उपयोग करके किसी क्वेरी में शून्य-मान रिकॉर्ड जोड़ना

  4. मैं Oracle में अनुक्रम कैसे रीसेट करूं?

  5. Oracle/SQL - नल को छोड़कर एक मान के साथ रिकॉर्ड ढूँढना