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

एक स्ट्रिंग की सही लंबाई, जैसा कि Oracle द्वारा देखा गया है

जैसा कि अन्य ने दिखाया है, आप Oracle डेटाबेस के वर्ण सेट का उपयोग करके जावा स्ट्रिंग को बाइट सरणी में परिवर्तित कर सकते हैं और फिर उससे बाइट्स में लंबाई प्राप्त कर सकते हैं। हालांकि, यह जानने पर निर्भर करता है कि आपके डेटाबेस का कैरेक्टर सेट क्या है-- अलग-अलग डेटाबेस में अलग-अलग कैरेक्टर सेट होंगे, जिसके परिणामस्वरूप अलग-अलग कैरेक्टर सेट में एक ही स्ट्रिंग के लिए अलग-अलग बाइट लंबाई होगी।

यह मानते हुए कि आपका डेटाबेस UTF-8 (NLS_CHARACTERSET जैसे चर-चौड़ाई वाले वर्ण सेट का उपयोग कर रहा है) AL32UTF8 का), आप बाइट लंबाई के बजाय वर्ण लंबाई के आधार पर Oracle में कॉलम भी घोषित कर सकते हैं। यह आपके कोड को सरल बना सकता है क्योंकि आप केवल अपनी स्ट्रिंग की वर्ण लंबाई की जांच कर सकते हैं। यह उपयोगकर्ताओं के लिए संचार को भी सरल करता है। उपयोगकर्ताओं के लिए यह समझना आम तौर पर कठिन होता है कि कोई फ़ील्ड कभी-कभी 5 वर्णों को क्यों संग्रहीत कर सकता है जबकि दूसरी बार यह 2 वर्ण स्ट्रिंग को अस्वीकार कर देता है जो कि स्ट्रिंग का हिस्सा हैं (UTF-8 वर्ण सेट में 1 वर्ण के लिए 3 बाइट्स की आवश्यकता हो सकती है) भंडारण की)।

डिफ़ॉल्ट रूप से, जब आप एक कॉलम घोषित करते हैं

CREATE TABLE foo (
  col_name VARCHAR2(5)
);

जो Oracle को 5 बाइट डेटा तक की अनुमति देने के लिए कहता है। यदि आप बाइट्स की संख्या की परवाह किए बिना डेटा के 5 वर्णों की अनुमति देना चाहते हैं, हालांकि, आप वर्ण लंबाई शब्दार्थ का उपयोग कर सकते हैं

CREATE TABLE foo (
  col_name VARCHAR2(5 CHAR)
);

यह मानते हुए कि आप अपना DDL चलाते समय अपनी सभी तालिकाओं के लिए ऐसा करना चाहते हैं, आप nls_length_semantics भी सेट कर सकते हैं अपना डीडीएल चलाने से पहले सत्र स्तर पर

ALTER SESSION SET nls_length_semantics = CHAR;

CREATE TABLE foo (
  col_name VARCHAR2(5)
);

एक स्तंभ के साथ एक तालिका बनाता है जो डेटा के 5 वर्णों तक की अनुमति देता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle में CLOB कॉलम को कैसे क्वेरी करें?

  2. क्या हम Oracle tools.jar को पुनर्वितरित कर सकते हैं?

  3. खंड में PIVOT के लिए गतिशील क्वेरी

  4. ORA-12514 TNS:श्रोता वर्तमान में कनेक्ट डिस्क्रिप्टर में अनुरोधित सेवा के बारे में नहीं जानता है

  5. क्या सामान्यीकृत तालिकाओं का उपयोग करना वाकई बेहतर है?