क्या कस्टम डेटा प्रकारों के लिए MySQL का कोई समर्थन है? उदाहरण के लिए, ज़िप कोड किसी varchar(10)
फ़ील्ड में संग्रहीत किए जा सकते हैं , लेकिन उन्हें int
रिक्त स्थान के विकल्प के साथ, और एक ध्वज के रूप में संकुचित किया जा सकता है , चाहे वह 5 अंकों या 5 + 4 अंकों वाला ज़िप कोड हो।
क्या ऐसी चीजों के लिए सहज डेटा प्रकार स्थापित करने का एक तरीका है? जहां तक आवेदन का संबंध है, यह एक स्ट्रिंग प्रकार होगा, यदि आवेदन में अमान्य डेटा पारित हो जाता है, तो बस डेटा ट्रंकेशन (चेतावनी के साथ या बिना) होगा।
कस्टम फ़ंक्शंस का उपयोग किया जा सकता है (उदाहरण के लिए, INET_ATON
IPv4 पतों के लिए फ़ंक्शन में बनाया गया है । लेकिन वह ऐसी चीज़ों की अनुमति नहीं देता है, zip LIKE '12345%'
जिन्हें ठीक से अनुक्रमित किया जाना चाहिए। कस्टम डेटा प्रकारों के लिए एक अच्छी तरह से लिखित समर्थन एक डेटा प्रकार को चिह्नित करने की अनुमति देगा। के रूप में कॉम्पैक्ट। तो कॉम्पैक्ट zip int
, जब हल, जैसे कि यह एक था zip varchar(10)
।
यह कॉलम को निश्चित चौड़ाई के लिए अनुमति देता है, यह 6 या 10 बाइट चर भंडारण को निश्चित चौड़ाई के 4 बाइट तक काटने की अनुमति देगा।
कई लागू उपयोग हैं
- ज़िप कोड
- IPv6 पते
- कस्टम टाइमस्टैम्प फ़ील्ड मिनट स्तर की सटीकता और क्षमता से
2038
कम भंडारण उपयोग से परे हैdatetime
, लेकिन कार्यान्वयन के वर्ष से पहले दिनांक का समर्थन करने की कोई आवश्यकता नहीं है (मान लें कि यह 2007 हो सकता है यदि वे सिस्टम में सबसे पुरानी तारीखें हैं) - DST को लागू करने वाले टाइमस्टैम्प (जो मौजूद नहीं हैं )
- दो पत्र अमेरिकी राज्य एक ही बाइट में संग्रहीत किए जा सकते हैं
- लंबे
ENUM
s को एक कस्टम डेटा प्रकार में अलग कियाDESCRIBE
जा सकता है ताकि सभी रैपिंग के साथ आउटपुट इतना गन्दा न लगे।
मुझे उम्मीद है कि डेटा प्रकार हैंडलर को उसी तरह संग्रहीत किया जाएगा जिस तरह से फ़ंक्शन संग्रहीत किए जाते हैं।
किसी भी डेटाबेस इंजन पर इस तरह दूर कुछ भी है? मैं ज्यादातर MySQL का उपयोग करता हूं, लेकिन मैं उत्सुक हूं कि क्या यह कभी लागू किया गया है, एप्लिकेशन को फ़ंक्शन की तरह एक फ़ंक्शन कॉल करने की कमी है INET_ATON
।
MS SQL को लगता है कि प्रकृति का कुछ है , लेकिन मैं यह जानना चाहूंगा कि क्या यह केवल एक पर्यायवाची से अधिक है। (उदाहरण के लिए boolean
के लिए एक पर्याय हो सकता है tinyint(1)
, या postal_code
में से एक के लिए char
या varchar
(5
या 9
या 10)
) समानार्थी नहीं क्या मैं यहाँ के बारे में पूछ रहा हूँ रहे हैं।
IPv6
ए में परिवर्तित हो जाएगा binary(16)
, या क्या यह एलियासिंग तक सीमित है (जिसे state
एस बनने के लिए इस्तेमाल किया जा सकता है enum
)
int
करेगा - कनाडा, उदाहरण के लिए, 'ए 9 ए ए 9 ए' के प्रारूप का उपयोग करता है। ज़िप-कोड के लिए एक कस्टम डेटा-प्रकार बनाना शायद एक अच्छा विचार है; हालाँकि, आप फिर से जांच कर सकते हैं कि आप उनमें से कुछ से निपटने की योजना कैसे बना रहे हैं (राज्य को एकल-बाइट क्षेत्र में संग्रहीत करना संभावित 'अन्य' मुद्दे हैं, उदाहरण के लिए)। और दिनांक / समय डेटाटाइप्स को फिर से लागू न करें, जब तक कि प्रदान की गई संयुक्त-अनुपयोगी कमी (आकार की गिनती न हो) - आप लोगों को भ्रमित करेंगे।