2012-10-03 10 views
6

मैं तालिका में एक कॉलम में null डालना चाहता हूं।कौन सा शून्य का प्रतिनिधित्व करता है? अपरिफ या खाली स्ट्रिंग

कौन सा शून्य प्रस्तुत करता है? undef या खाली स्ट्रिंग ''

किसका उपयोग किया जाना चाहिए और क्यों? मुझे defined के बारे में पता है और मैं इसे देख सकता हूं।

लेकिन मैं डेटाबेस के परिप्रेक्ष्य से अधिक देख रहा हूं।

कौन सा null अधिक उचित तरीके से दर्शाता है?

अद्यतन: मैं DBI मॉड्यूल का उपयोग कर रहा हूं।

उत्तर

9

डीबीआई undef का उपयोग SQL NULL का प्रतिनिधित्व करने के लिए करता है। खाली स्ट्रिंग एक खाली स्ट्रिंग का प्रतिनिधित्व करता है।

हालांकि, कुछ डेटाबेसNULL और खाली स्ट्रिंग के बीच अंतर नहीं बनाते हैं। Oracle is a particular offender here. डीबीआई इसके बारे में कुछ भी नहीं कर सकता है।

8

मान लीजिए पर्ल डीबीआई, undef एसक्यूएल NULL का प्रतिनिधित्व करता है।

पर्ल में एक खाली स्ट्रिंग SQL में बिल्कुल वही (यानी एक खाली स्ट्रिंग) का प्रतिनिधित्व करती है।

+0

यदि उनमें से दोनों 'न्यूल' का प्रतिनिधित्व करते हैं, तो किस का उपयोग करना है? –

+2

@ डर्ट, वे * दोनों * न्यूल 'का प्रतिनिधित्व नहीं करते हैं। 'undef' करता है। – Axeman

+0

@ एक्समन और @ अलनिटक .. जब मैं 'टैबलेटनाम से * चुनता हूं जहां कॉलमनाम शून्य है'। मुझे प्रत्येक मामले में एक ही पंक्ति मिलती है। :( –

4

मान लिया जाये कि आप DBI मॉड्यूल का उपयोग कर रहे हैं, और बाध्य तर्कों का उपयोग कर रहे हैं (चूंकि यदि आपने हाथ से एसक्यूएल निर्माण कर रहे थे, तो आप स्ट्रिंग में NULL का प्रयोग करेंगे):

अपरिभाषित मूल्यों, या undef, कर रहे हैं नल मूल्यों को इंगित करने के लिए प्रयोग किया जाता है।

आप DBI सीधे का उपयोग नहीं कर रहे हैं (उदा आप DBIx :: क्लास या कुछ अन्य ORM उपयोग कर रहे हैं) तो आप शायद पाएंगे कि यह इस बात के लिए DBI के व्यवहार को विरासत में the perldoc for DBI

देखें।

+0

तो यदि मैं उस कॉलम पर 'select' कथन चलाता हूं, तो क्या होगा यह 'undef' के लिए वापस आ जाता है। –

+0

चूंकि इसमें 'अनिश्चित' नहीं होगा, इसलिए यह प्रश्न समझ में नहीं आता है। यदि यह शून्य है तो आपको 'अपरिभाषित' हो जाएगा। दस्तावेज देखें जो मैंने आपको बताया है उत्तर: [पर्ल में अपरिभाषित मानों द्वारा अनिश्चित नल मानों का प्रतिनिधित्व किया जाता है] (एचटी tp: //search.cpan.org/dist/DBI/DBI.pm#Notation_and_Conventions) – Quentin

+0

नल को बाध्य पैरामीटर के रूप में पास करने से सावधान रहें।कुछ डेटाबेस आप जो अपेक्षा करते हैं वह नहीं करेंगे और "जहां x शून्य है" और "जहां x =?" की आवश्यकता होगी और एक पूर्ण पैरामीटर हमेशा एक जैसा नहीं है। मैंने कई वर्षों पहले डीबीआई-प्रयोक्ताओं पर http://www.easysoft.com/developer/languages/perl/dbd_odbc_tutorial_part_2.html#nulls पर चर्चा का सारांश लिखा था। – bohica

संबंधित मुद्दे