= ऑपरेटर टी-एसक्यूएल इतना "बराबर" नहीं है क्योंकि यह "समान शब्द / वाक्यांश हैं, जो अभिव्यक्ति के संदर्भ के टकराव के अनुसार," और LEN है "शब्द / वाक्यांश में वर्णों की संख्या।" कोई भी टकराव शब्द / वाक्यांश के पूर्व भाग के रूप में खाली कंबल का इलाज नहीं करता है (हालांकि वे उस स्ट्रिंग के भाग के रूप में अग्रणी रिक्त को मानते हैं)।
यदि आपको 'इस' को 'इस' से अलग करने की आवश्यकता है, तो आपको "समान शब्द या वाक्यांश" ऑपरेटर का उपयोग नहीं करना चाहिए क्योंकि 'यह' और 'यह' एक ही शब्द हैं।
रास्ते में योगदान देना = कार्य यह विचार है कि स्ट्रिंग-इक्वैलिटी ऑपरेटर को अपने तर्कों की सामग्री पर और अभिव्यक्ति के टकराव के संदर्भ पर निर्भर होना चाहिए, लेकिन यह दोनों प्रकार के तर्कों पर निर्भर नहीं होना चाहिए, यदि वे दोनों स्ट्रिंग प्रकार हैं ।
"ये एक ही शब्द हैं" की प्राकृतिक भाषा अवधारणा आमतौर पर = जैसे गणितीय ऑपरेटर द्वारा कब्जा करने में सक्षम होने के लिए पर्याप्त सटीक नहीं है, और प्राकृतिक भाषा में स्ट्रिंग प्रकार की कोई अवधारणा नहीं है। प्रसंग (यानी, टकराव) मायने रखता है (और प्राकृतिक भाषा में मौजूद है) और कहानी का हिस्सा है, और अतिरिक्त गुण (कुछ जो विचित्र लगते हैं) = की परिभाषा का हिस्सा हैं ताकि इसे अप्राकृतिक दुनिया में अच्छी तरह से परिभाषित किया जा सके डेटा।
प्रकार के मुद्दे पर, आप शब्दों को तब बदलना नहीं चाहेंगे जब वे विभिन्न स्ट्रिंग प्रकारों में संग्रहीत हों। उदाहरण के लिए, प्रकार VARCHAR (10), CHAR (10), और CHAR (3) सभी शब्द 'कैट' का प्रतिनिधित्व कर सकते हैं, और? = 'कैट' को हमें यह तय करने देना चाहिए कि क्या इनमें से किसी भी प्रकार का मान 'कैट' शब्द के साथ है (टकराव के द्वारा निर्धारित मामलों और उच्चारण के मुद्दों के साथ)।
JohnFx की टिप्पणी का जवाब:
चार और चर डेटा का उपयोग करना देखेंऑनलाइन पुस्तकों में । उस पृष्ठ से उद्धरण, मेरा जोर:
प्रत्येक चार्ट और varchar डेटा मान में एक टकराव होता है। कोलाज प्रत्येक चरित्र, तुलना नियमों का प्रतिनिधित्व करने के लिए उपयोग किए जाने वाले बिट पैटर्न जैसी विशेषताओं को परिभाषित करते
हैं , और मामले या उच्चारण के प्रति संवेदनशीलता।
मैं मानता हूं कि इसे खोजना आसान हो सकता है, लेकिन यह प्रलेखित है।
वर्थ नोटिंग भी, SQL का शब्दार्थ है, जहाँ = का वास्तविक दुनिया के आंकड़ों और तुलना के संदर्भ (कंप्यूटर पर संग्रहीत बिट्स के बारे में कुछ के विपरीत) के साथ लंबे समय तक एसक्यूएल का हिस्सा रहा है। आरडीबीएमएस और एसक्यूएल का आधार वास्तविक दुनिया के डेटा का वफादार प्रतिनिधित्व है, इसलिए समान विचारों (जैसे कि संस्कृतिइन्फो) से पहले कई वर्षों के टकराव के लिए इसका समर्थन अल्गोल जैसी भाषाओं के दायरे में प्रवेश किया। उन भाषाओं का आधार (कम से कम बहुत हाल तक) इंजीनियरिंग में समस्या-समाधान था, न कि व्यावसायिक डेटा का प्रबंधन। (हाल ही में, गैर-इंजीनियरिंग अनुप्रयोगों में समान भाषाओं का उपयोग खोज की तरह कुछ अयोग्य बना रहा है, लेकिन जावा, सी #, और इसी तरह अभी भी अपनी गैर-व्यावसायिक जड़ों से जूझ रहे हैं।)
मेरी राय में, "अधिकांश प्रोग्रामिंग भाषाओं" से अलग होने के लिए SQL की आलोचना करना उचित नहीं है। SQL को व्यवसाय डेटा मॉडलिंग के लिए एक फ्रेमवर्क का समर्थन करने के लिए डिज़ाइन किया गया था जो इंजीनियरिंग से बहुत अलग है, इसलिए भाषा अलग है (और अपने लक्ष्य के लिए बेहतर है)।
हेक, जब एसक्यूएल पहली बार निर्दिष्ट किया गया था, कुछ भाषाओं में कोई अंतर्निहित स्ट्रिंग प्रकार नहीं था। और कुछ भाषाओं में अभी भी, स्ट्रिंग्स के बीच बराबर ऑपरेटर चरित्र डेटा की तुलना बिल्कुल नहीं करता है, लेकिन संदर्भों की तुलना करता है! यह मुझे आश्चर्यचकित नहीं करेगा यदि एक या दो दशक में, यह विचार == संस्कृति पर निर्भर है कि आदर्श बन जाता है।