sql-server - tutorial - पल सकल



SQL सर्वर सर्वर में नियमित अभिव्यक्तियाँ? (4)

जवाब नहीं है, सामान्य मामले में नहीं, हालांकि यह निर्भर करता है कि आप कुशल द्वारा क्या मतलब है इन उद्देश्यों के लिए, मैं निम्नलिखित परिभाषा का प्रयोग करूंगा: 'इंडेक्स का प्रभावी इस्तेमाल करता है और एक समझदार आदेश में शामिल होता है' जो शायद किसी भी रूप में अच्छा है

इस मामले में, 'कुशल' प्रश्न 'एस-आरजी-सक्षम' हैं, जिसका अर्थ है कि वे खोज अनुमानों को कम करने के लिए इंडेक्स लुकअप का उपयोग कर सकते हैं। समानताएं (टी-जुड़ने) और सरल असमानता ऐसा कर सकती हैं। 'और' भविष्यवाणी भी ऐसा कर सकते हैं इसके बाद, हम टेबल, इंडेक्स और श्रेणी स्कैनिंग में आते हैं - यानी ऐसे ऑपरेशन जिन्हें रिकॉर्ड-बाय-रिकॉर्ड (इंडेक्स-कीबी द्वारा इंडेक्स-की) तुलना करना पड़ता है।

सोनटेक के उत्तर में एक क्वेरी में regexp कार्यक्षमता को बढ़ाने की एक विधि का वर्णन किया गया है, लेकिन आपरेशनों को रिकॉर्ड के आधार पर एक रिकॉर्ड पर तुलना करना पड़ता है। इसे फ़ंक्शन में लपेटने से फ़ंक्शन-आधारित सूचकांक की अनुमति होगी, जहां गणना का परिणाम सूचकांक में बना है (ओरेकल इस का समर्थन करता है और आप SQL सर्वर में इस आलेख में चर्चा की गई चालान की तरह उपयोग कर सकते हैं)। हालांकि, आप ऐसा एक मनमानी regexp के लिए नहीं कर सका।

सामान्य मामले में, एक नियमित अभिव्यक्ति की शब्दार्थों को एक तरह से उस तरह से प्रणयिंग मैच सेटों पर खुद को उधार देना नहीं होता है, जिससे कि सूचकांक ऐसा करता है, इसलिए क्वेरी ऑप्टिमाइज़र में रेक्सएप समर्थन को एकीकृत करना शायद संभव नहीं है।

https://src-bin.com

क्या कुशल क्वेरीज़ करना संभव है जो पूर्ण नियमित अभिव्यक्ति सुविधा सेट का उपयोग करते हैं।

अगर माइक्रोसॉफ्ट वास्तव में उस सुविधा पर विचार नहीं करना चाहिए


Answer #1

यह देखें और यह । वे यह कैसे करना है पर महान पोस्ट कर रहे हैं।


Answer #2

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

और मैं मानता हूं कि ऐसा लगता है कि कोई नियमित अभिव्यक्ति समर्थन नहीं है, यह एक क्वेरी भाषा के लिए एक स्पष्ट विशेषता की तरह लगता है उम्मीद है कि हम इसे भविष्य के संस्करण में देखेंगे लेकिन लोग इसके लिए लंबे समय से पूछ रहे हैं और इसने अभी तक इस उत्पाद को अपना रास्ता नहीं बनाया है।

मैंने इसके खिलाफ सबसे अधिक बार देखा है कि खराब खराब अभिव्यक्ति का कारण विपत्तिपूर्ण बैक्रार्किंग हो सकता है, जो कि .net में रद्द नहीं होगा और लगभग हमेशा मशीन को पुनरारंभ करने की आवश्यकता होती है। शायद वे एक बार पता करते हैं कि ढांचे में हम इसे SQL सर्वर के भविष्य के संस्करण में शामिल देखेंगे।


Answer #3

एसक्यूएल सर्वर 2000 (और SQL सर्वर के किसी भी अन्य 32 बिट संस्करण) के लिए, वहाँ है xp_pcre , जो विस्तारित संग्रहित प्रक्रियाओं के एक सेट के रूप में पर्ल संगत नियमित अभिव्यक्ति का परिचय देता है। मैंने इसे इस्तेमाल किया है, यह काम करता है

अधिक हाल के संस्करण आपको नेट एंटीग्रेटेड रेगुलर एक्सप्रेशंस (डायरेक्ट रेग्युलर एक्सप्रेशंस ) तक सीधे पहुंच देते हैं (यह लिंक मरे हुए लगता है, यहां एक और है: एमएसडीएन: कैसे: सीएलआर डाटाबेस ऑब्जेक्ट्स के साथ काम करें )





sql-server-2000