1s अनुरोध में पंक्ति बदलें. सबस्ट्रिंग() फ़ंक्शन निष्पादन की सुविधा

आइए अब बाकी पर नजर डालें।

1सी प्रश्नों में स्ट्रिंग्स के साथ काम करने के लिए कार्य

1सी प्रश्नों में स्ट्रिंग डेटा के साथ काम करने के लिए कुछ फ़ंक्शन और ऑपरेटर हैं।

सबसे पहले, प्रश्नों में स्ट्रिंग्स जोड़ी जा सकती हैं। ऐसा करने के लिए, "+" ऑपरेटर का उपयोग करें:

अनुरोध। पाठ = "चुनें
" "रेखा: " " + स्रोत.नाम
;

दूसरे, आप पंक्ति का भाग चुन सकते हैं. ऐसा करने के लिए, फ़ंक्शन का उपयोग करें सबस्ट्रक्शन.यह फ़ंक्शन अंतर्निहित 1C भाषा के समान है। इसके तीन पैरामीटर हैं:

  1. स्रोत स्ट्रिंग.
  2. उस वर्ण की संख्या जिससे चयनित पंक्ति प्रारंभ होनी चाहिए.
  3. पात्र।

अनुरोध। पाठ= "चुनना
सबस्ट्रिंग("
"रेखा: " ", 4, 3) परिणाम के रूप में"; // परिणाम: ठीक है

समारोह शून्य है

NULL 1C:Enterprise प्लेटफ़ॉर्म पर एक विशेष डेटा प्रकार है। वह अकेला है संभव अर्थइस प्रकार। NULL कई मामलों में प्रश्नों में दिखाई दे सकता है: क्वेरी स्रोतों को कनेक्ट करते समय, यदि तालिकाओं में से किसी एक में संबंधित मान नहीं मिला; किसी अस्तित्वहीन वस्तु के विवरण तक पहुँचने पर; यदि क्वेरी फ़ील्ड की सूची में NULL निर्दिष्ट किया गया था (उदाहरण के लिए, कई तालिकाओं से चयन परिणामों को संयोजित करते समय), आदि।

क्योंकि NULL न तो शून्य है, न ही खाली स्ट्रिंग है, न ही कोई मान है अपरिभाषित,इसे किसी अधिक उपयोगी डेटा प्रकार से बदलना अक्सर उपयोगी होता है। यह फ़ंक्शन इसी के लिए डिज़ाइन किया गया है। शून्य है।

इसके दो पैरामीटर हैं:

  1. मूल्य की जाँच की जा रही है.
  2. यदि पहला पैरामीटर शून्य हो जाता है तो उसे प्रतिस्थापित करने का मान।

अनुरोध। पाठ= "चुनना
ISNULL(स्रोत.शेष, 0) शेष के रूप में"
; // यदि अनुरोध का परिणाम फ़ील्ड शेष = शून्य है,
// फिर इसे 0 से बदल दिया जाएगा, और आप इसके साथ गणितीय कार्य कर सकते हैं

कार्य प्रदर्शनऔर परिचयलिंक

ये फ़ंक्शन स्ट्रिंग प्रतिनिधित्व प्राप्त करने के लिए डिज़ाइन किए गए हैं विभिन्न अर्थ. अर्थात्, वे संदर्भों, संख्याओं, बूलियन आदि को परिवर्तित करते हैं। सादे पाठ में. उनके बीच का अंतर यह है कि कार्य प्रदर्शनकिसी भी डेटा प्रकार को टेक्स्ट (स्ट्रिंग) और फ़ंक्शन में परिवर्तित करता है परिचयलिंक- केवल लिंक करता है, और शेष मानों को वैसे ही लौटाता है, परिवर्तित नहीं किया जाता।

अनुरोध। पाठ= "चुनना
प्रतिनिधित्व(सही) बूलियन के रूप में,
प्रतिनिधित्व (4) एक संख्या के रूप में,
प्रतिनिधित्व (स्रोत.लिंक) एएस लिंक,
प्रतिनिधित्व(दिनांकसमय(2016,10,07)) दिनांक के अनुसार"
;
// बूलियन = "हाँ", संख्या = "4", लिंक = "उपभोज्य दस्तावेज़ नकद आदेशनहीं....से..."
//दिनांक='07.10.2016 0:00:00'

अनुरोध। पाठ= "चुनना
प्रतिनिधित्वसंदर्भ(सत्य) बूलियन के रूप में,
प्रतिनिधित्वसंदर्भ(4) संख्या के रूप में
प्रेजेंटिंगलिंक(स्रोत.लिंक) लिंक के रूप में,
प्रतिनिधित्वसंदर्भ(दिनांकसमय(2016,10,07)) दिनांक के अनुसार"
;
// बूलियन = सत्य, संख्या = 4, लिंक = "दस्तावेज़ नकद रसीद आदेश संख्या....से..."
// दिनांक=07.10.2016 0:00:00

कार्य प्रकारऔर प्रकार मान

समारोह प्रकार 1C:एंटरप्राइज़ प्लेटफ़ॉर्म डेटा प्रकार लौटाता है।

अनुरोध। पाठ= "चुनना
प्रकार (संख्या)
प्रकार (स्ट्रिंग),
प्रकार (दस्तावेज़. व्यय नकद आदेश)"
;

समारोह प्रकार मानउसे दिए गए मान का प्रकार लौटाता है।

अनुरोध। पाठ= "चुनना
मान प्रकार (5) संख्या के रूप में,
प्रकार ("
"रेखा" ") रस्सी जैसी,
संदर्भ के रूप में टाइप करें (स्रोत.लिंक)।
निर्देशिका से। स्रोत एएस स्रोत"
;
//संख्या=संख्या, स्ट्रिंग=स्ट्रिंग, निर्देशिका = निर्देशिकालिंक.स्रोत

इन फ़ंक्शंस का उपयोग करना सुविधाजनक है, उदाहरण के लिए, जब आपको यह पता लगाने की आवश्यकता होती है कि अनुरोध में प्राप्त फ़ील्ड किसी प्रकार का मान है या नहीं। उदाहरण के लिए, हम संपर्क सूचना सूचना रजिस्टर से प्रतिपक्षों की संपर्क जानकारी प्राप्त करेंगे (न केवल प्रतिपक्षों के संपर्क, बल्कि संगठनों के भी, व्यक्तियोंवगैरह।):

अनुरोध। पाठ= "चुनना

से

कहाँ
मान प्रकार(संपर्क सूचना.ऑब्जेक्ट) = प्रकार(निर्देशिका.प्रतिपक्ष)"
;

समारोह अर्थ

समारोह अर्थआपको बिना उपयोग किए सीधे अनुरोध में 1C कॉन्फ़िगरेशन ऑब्जेक्ट का उपयोग करने की अनुमति देता है।

आइए पिछले उदाहरण में एक और शर्त जोड़ें। आपको केवल अपने समकक्षों के फ़ोन नंबर प्राप्त करने की आवश्यकता है।

अनुरोध। पाठ= "चुनना
संपर्क जानकारी.परिचय
से
सूचना का रजिस्टर. संपर्क जानकारी कैसे संपर्क जानकारी
कहाँ
मान प्रकार(संपर्क सूचना.ऑब्जेक्ट) = प्रकार(निर्देशिका.प्रतिपक्ष)
और contactInfo.Type = VALUE(Enum.ContactInfoTypes.Phone)"
;

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

ऑपरेटर जोड़ना

ऑपरेटर जोड़नायह देखने के लिए अनुरोध द्वारा लौटाए गए मानों की जांच करने के लिए डिज़ाइन किया गया है कि क्या वे किसी विशिष्ट संदर्भ प्रकार से संबंधित हैं। फ़ंक्शंस का उपयोग करके समान कार्य पूरा किया जा सकता है प्रकारऔर प्रकार मान(जिसका दायरा व्यापक है और जिसकी चर्चा ऊपर की गई है)।

उदाहरण के लिए, चयन कार्य संपर्क जानकारीप्रतिपक्षों को इस प्रकार हल किया जा सकता है:

अनुरोध। पाठ= "चुनना
संपर्क जानकारी.परिचय
से
सूचना का रजिस्टर. संपर्क जानकारी कैसे संपर्क जानकारी
कहाँ
संपर्क जानकारी.ऑब्जेक्ट लिंक निर्देशिका.प्रतिपक्ष"
;

ऑपरेटर अभिव्यक्त करना

ऑपरेटर अभिव्यक्त करनादो मामलों में 1C प्रश्नों में उपयोग किया जाता है:

  • जब आपको किसी आदिम प्रकार की विशेषताओं को बदलने की आवश्यकता हो;
  • जब आपको किसी मिश्रित डेटा प्रकार वाले फ़ील्ड को एकल प्रकार वाले फ़ील्ड में बदलने की आवश्यकता होती है।

आदिम डेटा प्रकारों में शामिल हैं: संख्या, स्ट्रिंग, दिनांक, बूलियन।इनमें से कुछ डेटा प्रकार हैं अतिरिक्त विशेषताएँ. प्रकार संख्यालंबाई और परिशुद्धता, प्रकार है रेखा -लंबाई या असीमित.

ऑपरेटर अभिव्यक्त करनाआपको डेटा प्रकार नहीं, बल्कि अतिरिक्त विशेषताएँ बदलने की अनुमति देता है। उदाहरण के लिए, वह असीमित लंबाई वाली एक स्ट्रिंग को सीमित लंबाई वाली स्ट्रिंग में बदल सकता है। यदि आपको ऐसे फ़ील्ड के आधार पर क्वेरी परिणामों को समूहीकृत करने की आवश्यकता हो तो यह उपयोगी हो सकता है। आप असीमित लंबाई वाले फ़ील्ड के आधार पर समूह नहीं बना सकते, इसलिए हम इसे 200 वर्णों की लंबाई वाली स्ट्रिंग में परिवर्तित करते हैं।

अनुरोध। पाठ= "चुनना
मात्रा (वस्तुओं और सेवाओं का अलग-अलग आगमन। लिंक) एएस लिंक
से
दस्तावेज़। वस्तुओं और सेवाओं की प्राप्ति। वस्तुओं और सेवाओं की प्राप्ति कैसे होती है
द्वारा समूह बनाएं
एक्सप्रेस (वस्तुओं और सेवाओं की प्राप्ति। पंक्ति के अनुसार टिप्पणी करें (200))"
;

कुछ मामलों में, समग्र डेटा प्रकार वाले फ़ील्ड के प्रश्नों को 1C प्लेटफ़ॉर्म द्वारा इष्टतम रूप से संसाधित नहीं किया जा सकता है। इसके परिणामस्वरूप क्वेरी में अधिक समय लगता है, इसलिए किसी कंपाउंड प्रकार को पहले से ही एकल प्रकार में परिवर्तित करना उपयोगी हो सकता है।

अनुरोध। पाठ= "चुनना
एक्सप्रेस (माल की आवाजाही। दस्तावेज़ के रूप में ऑर्डर। ग्राहक का ऑर्डर)। ऑर्डर की तारीख के रूप में दिनांक,
माल कारोबार का संचलन, नामकरण
से
संचय रजिस्टर करें। माल का संचलन। माल के कारोबार के रूप में कारोबार
कहाँ
गुड्स टर्नओवर का संचलन। ऑर्डर लिंक दस्तावेज़। क्लाइंट ऑर्डर"
;

ऑपरेटर्स पसंदऔर शून्य है

ऑपरेटर पसंदऑपरेटर के समान अगरअंतर्निहित 1सी भाषा में, लेकिन इसकी कार्यक्षमता कुछ हद तक कम हो गई है।

मान लीजिए कि हम संपर्क सूचना सूचना रजिस्टर से संपर्क जानकारी प्राप्त करना चाहते हैं और साथ ही, एक अलग अनुरोध फ़ील्ड में इंगित करना चाहते हैं कि यह प्रतिपक्ष या किसी व्यक्ति से संबंधित है या नहीं।

अनुरोध। पाठ= "चुनना
संपर्क जानकारी.परिचय,
पसंद
जब मान प्रकार(ContactInformation.Object) = प्रकार(निर्देशिका.प्रतिपक्ष)
तब "
प्रतिपक्ष "
अन्य विकल्प
जब मान प्रकार(संपर्क सूचना.वस्तु) = प्रकार(निर्देशिका.व्यक्ति)
तब "
व्यक्ति"
अन्यथा "कोई और" "
अंत
स्वामी के रूप में समाप्त करें
से
सूचना का रजिस्टर. संपर्क जानकारी के रूप में संपर्क जानकारी"
;

जैसा कि उदाहरण से देखा जा सकता है, डिज़ाइन में पसंदशब्द के बाद हमेशा एक शर्त होती है कब;यदि शब्द के बाद शर्त सत्य है तो मूल्य लागू किया जाता है तबऔर शर्त पूरी न होने पर शब्द के बाद लागू मूल्य अन्यथा।सभी तीन डिज़ाइन तत्व पसंदअनिवार्य हैं। तत्व छोड़ें अन्यथा, उसी तरह जैसे ऑपरेटर का उपयोग करते समय अगरअंतर्निहित 1C भाषा में, यह असंभव है। ऑपरेटर से भी पसंदडिज़ाइन का कोई एनालॉग नहीं है अन्यथा, लेकिन आप एक निवेश कर सकते हैं पसंददूसरे में, जैसा कि हमारे उदाहरण में किया गया था।

ऑपरेटर शून्य हैडिज़ाइन में उपयोग किया जाता है पसंदकिसी क्वेरी फ़ील्ड की तुलना NULL प्रकार से करने के लिए।

अनुरोध। पाठ= "चुनना
पसंद
जब मान शून्य हो तो 0
अन्य का अर्थ
अंत"
;

इसके अलावा, ऑपरेटर शून्य हैक्वेरी स्थितियों में उपयोग किया जा सकता है, जैसे कि एक वाक्य में कहाँ।

अनुभाग में कार्य के क्लाइंट-सर्वर संस्करण में क्वेरी भाषा के SUBSTRING() फ़ंक्शन को निष्पादित करने की विशिष्टताओं और क्वेरी के निर्माण के लिए परिणामी अनुशंसाओं का विवरण शामिल है।

सबस्ट्रिंग() फ़ंक्शन

1C:एंटरप्राइज़ क्वेरी भाषा में, SUBSTRING(,) प्रारूप में SUBSTRING() फ़ंक्शन को स्ट्रिंग प्रकार के डेटा पर लागू किया जा सकता है और आपको वर्ण संख्या से शुरू होने वाले एक टुकड़े का चयन करने की अनुमति मिलती है (स्ट्रिंग में वर्णों को 1 से शुरू करके क्रमांकित किया जाता है) और पात्रों की लंबाई. SUBSTRING() फ़ंक्शन का परिणाम एक चर-लंबाई स्ट्रिंग प्रकार है, और लंबाई असीमित मानी जाएगी यदि इसकी लंबाई असीमित है और पैरामीटर स्थिर नहीं है या 1024 से अधिक है।

SQL सर्वर में SUBSTRING() फ़ंक्शन की गणना

कार्य के क्लाइंट-सर्वर संस्करण में, SUBSTRING() फ़ंक्शन को संबंधित SQL कथन के SUBSTRING() फ़ंक्शन का उपयोग करके कार्यान्वित किया जाता है, जो SQL सर्वर डेटाबेस सर्वर को दिया जाता है, जो SUBSTRING() फ़ंक्शन के परिणाम प्रकार की गणना करता है जटिल नियमइसके मापदंडों के प्रकार और मूल्यों के साथ-साथ उस संदर्भ पर निर्भर करता है जिसमें इसका उपयोग किया जाता है।

अधिकांश मामलों में, ये नियम 1C:एंटरप्राइज़ अनुरोध के निष्पादन को प्रभावित नहीं करते हैं, हालाँकि, ऐसे मामले भी हैं जब ज्यादा से ज्यादा लंबाईपरिणाम स्ट्रिंग की गणना SQL सर्वर द्वारा की जाती है। यह ध्यान रखना महत्वपूर्ण है कि कुछ संदर्भों में SUBSTRING() फ़ंक्शन का उपयोग करते समय, इसके परिणाम की अधिकतम लंबाई सीमित लंबाई वाली स्ट्रिंग की अधिकतम लंबाई के बराबर हो सकती है, जो SQL सर्वर में 4000 वर्ण है। इससे अनुरोध अप्रत्याशित रूप से समाप्त हो सकता है।

उदाहरण के लिए, अनुरोध:

चुनना
पसंद

अन्यथा शून्य
एक प्रस्तुति के रूप में अंत,
पसंद
जब प्रकार = और कानूनी पताव्यक्तिगत
फिर सबस्ट्रिंग (प्रतिनिधित्व, 0, 200)
अन्यथा शून्य
प्रेजेंटेशन1 के रूप में समाप्त करें
से

इसके अनुसार क्रमबद्ध करें
प्रदर्शन,
प्रदर्शन1

संदेश के साथ क्रैश हो जाता है:

डीबीएमएस त्रुटि:
SQL सर्वर के लिए Microsoft OLE DB प्रदाता: चेतावनी: क्वेरी प्रोसेसर ऑप्टिमाइज़र से क्वेरी प्लान तैयार नहीं कर सका क्योंकि कुल लंबाई सभीग्रुप बाय या ऑर्डर बाय क्लॉज में कॉलम 8000 बाइट्स से अधिक है।
HRESULT=80040E14, SQLSTATE=42000, मूल=8618

ऐसा इसलिए होता है क्योंकि Microsoft SQL सर्वर अभिव्यक्ति से उत्पन्न स्ट्रिंग की अधिकतम लंबाई की गणना करता है:

पसंद
जब प्रकार = और कानूनी पताव्यक्तिगत
फिर सबस्ट्रिंग (प्रतिनिधित्व, 0, 200)
अन्यथा शून्य
एक प्रस्तुति के रूप में अंत,

4000 अक्षरों के बराबर है. इसलिए, ऐसे दो फ़ील्ड वाले रिकॉर्ड की लंबाई सॉर्ट ऑपरेशन के लिए अनुमत 8000 बाइट्स से अधिक है।

SQL सर्वर पर SUBSTRING() फ़ंक्शन के निष्पादन की वर्णित विशिष्टता के कारण, असीमित लंबाई की स्ट्रिंग को सीमित लंबाई की स्ट्रिंग में परिवर्तित करने के लिए SUBSTRING() फ़ंक्शन का उपयोग करने की अनुशंसा नहीं की जाती है। इसके बजाय, कास्ट ऑपरेटर एक्सप्रेस() का उपयोग करना बेहतर है। विशेष रूप से, उपरोक्त उदाहरण को इस प्रकार फिर से लिखा जा सकता है:

चुनना
पसंद
जब प्रकार = और कानूनी पताव्यक्तिगत
अन्यथा शून्य
एक प्रस्तुति के रूप में अंत,
पसंद
जब प्रकार = और कानूनी पताव्यक्तिगत
फिर व्यक्त करें (स्ट्रिंग के रूप में प्रतिनिधित्व (200))
अन्यथा शून्य
प्रेजेंटेशन1 के रूप में समाप्त करें
से
सूचना का रजिस्टर. संपर्क जानकारी संपर्क जानकारी कैसे करें
इसके अनुसार क्रमबद्ध करें
प्रदर्शन,
प्रदर्शन1

क्वेरी भाषा डेवलपर्स के लिए 1C 8.3 के मूलभूत तंत्रों में से एक है। क्वेरीज़ का उपयोग करके, आप डेटाबेस में संग्रहीत किसी भी डेटा को तुरंत पुनर्प्राप्त कर सकते हैं। इसका सिंटैक्स SQL ​​के समान है, लेकिन इसमें कुछ अंतर हैं।

SQL की तुलना में 1C 8.3 (8.2) क्वेरी भाषा के मुख्य लाभ:

  • संदर्भ फ़ील्ड को डीरेफ़रेंस करना (ऑब्जेक्ट विवरण के लिए एक या अधिक बिंदुओं का संदर्भ देना);
  • परिणामों के साथ काम करना बहुत सुविधाजनक है;
  • वर्चुअल टेबल बनाने की क्षमता;
  • अनुरोध अंग्रेजी और रूसी दोनों में लिखा जा सकता है;
  • गतिरोध से बचने के लिए डेटा को ब्लॉक करने की क्षमता।

1सी में क्वेरी भाषा के नुकसान:

  • SQL के विपरीत, 1C में क्वेरीज़ डेटा बदलने की अनुमति नहीं देती हैं;
  • संग्रहित प्रक्रियाओं की कमी;
  • एक स्ट्रिंग को एक संख्या में परिवर्तित करने की असंभवता.

आइए 1C क्वेरी भाषा की बुनियादी संरचनाओं पर हमारे लघु ट्यूटोरियल पर एक नज़र डालें।

इस तथ्य के कारण कि 1C में क्वेरीज़ आपको केवल डेटा प्राप्त करने की अनुमति देती हैं, किसी भी क्वेरी को "SELECT" शब्द से शुरू होना चाहिए। इस आदेश के बाद, वे फ़ील्ड इंगित की जाती हैं जिनसे डेटा प्राप्त किया जाना चाहिए। यदि आप "*" निर्दिष्ट करते हैं, तो सभी उपलब्ध फ़ील्ड का चयन किया जाएगा। वह स्थान जहाँ से डेटा का चयन किया जाएगा (दस्तावेज़, रजिस्टर, निर्देशिका, आदि) "FROM" शब्द के बाद इंगित किया गया है।

नीचे चर्चा किए गए उदाहरण में, संपूर्ण नामकरण के नाम "नामकरण" निर्देशिका से चुने गए हैं। शब्द "HOW" के बाद तालिकाओं और फ़ील्ड के लिए उपनाम (नाम) दर्शाए गए हैं।

चुनना
नामकरण। नाम के रूप में नामकरण का नाम
से
निर्देशिका.नामपद्धति नामकरण के रूप में

"SELECT" कमांड के आगे आप कीवर्ड निर्दिष्ट कर सकते हैं:

  • विभिन्न. क्वेरी केवल उन पंक्तियों का चयन करेगी जो कम से कम एक फ़ील्ड में भिन्न हैं (डुप्लिकेट के बिना)।
  • पहला एन, कहाँ एन- परिणाम की शुरुआत से पंक्तियों की संख्या जिन्हें चुनने की आवश्यकता है। अक्सर, इस निर्माण का उपयोग सॉर्टिंग (ऑर्डर बाय) के संयोजन में किया जाता है। उदाहरण के लिए, जब आपको तारीख के अनुसार नवीनतम दस्तावेजों की एक निश्चित संख्या का चयन करने की आवश्यकता होती है।
  • अनुमत. यह डिज़ाइन आपको डेटाबेस से केवल उन्हीं रिकॉर्ड्स का चयन करने की अनुमति देता है जो वर्तमान उपयोगकर्ता के लिए उपलब्ध हैं। इसका उपयोग करने के लिए आधार कीवर्डउपयोगकर्ता को उन रिकॉर्ड्स को क्वेरी करने का प्रयास करते समय एक त्रुटि संदेश प्राप्त होगा जिन तक उनकी पहुंच नहीं है।

इन कीवर्ड का उपयोग एक साथ या अलग-अलग किया जा सकता है।

बदलाव के लिए

यह प्रस्ताव आपसी टकराव को रोकने के लिए डेटा को ब्लॉक कर देता है। लेन-देन समाप्त होने तक लॉक किया गया डेटा दूसरे कनेक्शन से नहीं पढ़ा जाएगा। इस खंड में, आप विशिष्ट तालिकाएँ निर्दिष्ट कर सकते हैं जिन्हें लॉक करने की आवश्यकता है। नहीं तो सभी को ब्लॉक कर दिया जाएगा. डिज़ाइन केवल स्वचालित लॉकिंग मोड के लिए प्रासंगिक है।

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

चुनना
आपसी बस्तियां,
आपसी हिसाब-किताब। आपसी हिसाब-किताब की रकम
से
संचय का रजिस्टर, कर्मचारियों के साथ पारस्परिक निपटान
बदलाव के लिए

कहाँ

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

किसी विशिष्ट पद के लिए संपर्क व्यक्तियों को प्राप्त करने के अनुरोध का एक उदाहरण नीचे दिया गया है। चयन पैरामीटर का प्रारूप है: &ParameterName (पैरामीटर नाम मनमाना है)।

चयन (मामला)

डिज़ाइन आपको सीधे अनुरोध के मुख्य भाग में स्थितियाँ निर्दिष्ट करने की अनुमति देता है।

नीचे दिए गए उदाहरण में, "अतिरिक्तफ़ील्ड" में टेक्स्ट होगा जो इस बात पर निर्भर करेगा कि दस्तावेज़ पोस्ट किया गया है या नहीं:

चुनना
प्रवेश टी एंड यू.लिंक,
पसंद
जब प्रवेश टी एंड यू. ने प्रदर्शन किया
फिर "दस्तावेज़ पारित कर दिया गया है!"
अन्यथा "दस्तावेज़ पोस्ट नहीं किया गया था..."
अतिरिक्त फ़ील्ड के रूप में समाप्त करें
से
दस्तावेज़। वस्तुओं और सेवाओं की रसीद कैसे प्राप्त करें नियम और शर्तें

जोड़ना

एक विशिष्ट संबंध स्थिति के आधार पर दो तालिकाओं को लिंक से जोड़ता है।

बाएँ/दाएँ कनेक्शन

LEFT जॉइन का सार यह है कि पहली निर्दिष्ट तालिका को उसकी संपूर्णता में लिया जाता है और दूसरी को कनेक्शन की स्थिति के अनुसार उससे जोड़ा जाता है। यदि दूसरी तालिका में पहली तालिका के अनुरूप कोई रिकॉर्ड नहीं हैं, तो NULL को उनके मानों के रूप में प्रतिस्थापित किया जाता है। सीधे शब्दों में कहें तो, मुख्य तालिका पहली निर्दिष्ट तालिका है और दूसरी तालिका का डेटा (यदि कोई हो) पहले से ही उसके डेटा के लिए प्रतिस्थापित किया गया है।

उदाहरण के लिए, "वस्तुओं और सेवाओं की प्राप्ति" दस्तावेजों से आइटम आइटम और सूचना रजिस्टर "आइटम की कीमतें" से कीमतें प्राप्त करना आवश्यक है। इस मामले में, यदि किसी स्थिति के लिए कीमत नहीं मिलती है, तो इसके स्थान पर NULL रखें। दस्तावेज़ से सभी आइटम का चयन किया जाएगा चाहे उनकी कोई कीमत हो या नहीं।

चुनना
रसीद एवं यू.नामपद्धति,
कीमतें.कीमत
से
दस्तावेज़। माल और सेवाओं की प्राप्ति। माल की रसीद नियम और शर्तें
आंतरिक जॉइन रजिस्टर जानकारी। मूल्य नामकरण। कीमतों के रूप में अंतिम स्लाइस
सॉफ्टवेयर रसीद एवं यू.नामपद्धति = कीमतें.नामपद्धति

दाहिनी ओर सब कुछ बिल्कुल विपरीत है।

पूर्ण कनेक्शन

इस प्रकार का कनेक्शन अलग है पिछले विषय, जिसके परिणामस्वरूप पहली तालिका और दूसरी दोनों के सभी रिकॉर्ड वापस कर दिए जाएंगे। यदि अनुसार दी गई शर्तयदि पहली या दूसरी तालिका में कोई रिकॉर्ड नहीं मिलता है, तो इसके बजाय NULL लौटा दिया जाएगा।

पिछले उदाहरण में पूर्ण कनेक्शन का उपयोग करते समय, "वस्तुओं और सेवाओं की प्राप्ति" दस्तावेज़ से सभी आइटम आइटम और "आइटम मूल्य" रजिस्टर से सभी नवीनतम कीमतों का चयन किया जाएगा। पहली और दूसरी दोनों तालिकाओं में न मिले रिकॉर्ड का मान NULL के बराबर होगा।

आंतरिक रूप से जुड़ा

अंतर आंतरिक जोड़पूर्ण से यह है कि यदि कम से कम एक तालिका में कोई रिकॉर्ड नहीं मिलता है, तो क्वेरी उसे बिल्कुल भी प्रदर्शित नहीं करेगी। परिणामस्वरूप, दस्तावेज़ "वस्तुओं और सेवाओं की प्राप्ति" से केवल उन आइटम आइटम का चयन किया जाएगा जिनके लिए सूचना रजिस्टर "आइटम की कीमतें" में रिकॉर्ड हैं, यदि पिछले उदाहरण में हम "पूर्ण" को "आंतरिक" से बदलते हैं।

द्वारा समूह बनाएं

1सी प्रश्नों में समूहीकरण आपको एक विशिष्ट के अनुसार तालिका पंक्तियों (क्षेत्रों को समूहीकृत करना) को संक्षिप्त करने की अनुमति देता है आम लक्षण(समूहीकृत फ़ील्ड)। समूहीकरण फ़ील्ड केवल समग्र फ़ंक्शंस का उपयोग करके प्रदर्शित किया जा सकता है।

निम्नलिखित क्वेरी का परिणाम उनके लिए अधिकतम कीमतों वाले उत्पाद प्रकारों की एक सूची होगी।

चुनना
,
अधिकतम(मूल्य.मूल्य) मूल्य के रूप में
से

द्वारा समूह बनाएं
कीमतें.नामकरण.नामकरण का प्रकार

परिणाम

समूहीकरण के विपरीत, कुल का उपयोग करते समय, सभी रिकॉर्ड प्रदर्शित होते हैं और कुल पंक्तियाँ उनमें जोड़ दी जाती हैं। समूहीकरण केवल सामान्यीकृत रिकॉर्ड प्रदर्शित करता है।

परिणामों को संपूर्ण तालिका (कीवर्ड "सामान्य" का उपयोग करके), कई क्षेत्रों के लिए, पदानुक्रमित संरचना वाले फ़ील्ड (कीवर्ड "पदानुक्रम", "केवल पदानुक्रम") के लिए सारांशित किया जा सकता है। परिणामों को सारांशित करते समय, समग्र कार्यों का उपयोग करना आवश्यक नहीं है।

आइए ग्रुपिंग का उपयोग करते हुए उपरोक्त उदाहरण के समान एक उदाहरण देखें। इस मामले में, क्वेरी परिणाम न केवल समूहीकृत फ़ील्ड लौटाएगा, बल्कि विस्तृत रिकॉर्ड भी लौटाएगा।

चुनना
कीमतें, नामकरण, नामकरण का प्रकार, नामकरण का प्रकार,
कीमतें. कीमत के रूप में कीमत
से
सूचना का रजिस्टर, नामकरण की नवीनतम एएस कीमतों का स्नैपशॉट
परिणाम
अधिकतम(कीमत)
द्वारा
प्रकारनामपद्धति

होना

यह ऑपरेटर WHERE ऑपरेटर के समान है, लेकिन इसका उपयोग केवल समग्र कार्यों के लिए किया जाता है। इस ऑपरेटर द्वारा उपयोग किए गए फ़ील्ड को छोड़कर, शेष फ़ील्ड को समूहीकृत किया जाना चाहिए। WHERE ऑपरेटर समग्र कार्यों पर लागू नहीं है।

नीचे दिए गए उदाहरण में, किसी आइटम की अधिकतम कीमतें 1000 से अधिक होने पर चुनी जाती हैं, उन्हें आइटम प्रकार के आधार पर समूहीकृत किया जाता है।

चुनना

अधिकतम(मूल्य.मूल्य) मूल्य के रूप में
से
सूचना का रजिस्टर, नामकरण की नवीनतम एएस कीमतों का स्नैपशॉट
द्वारा समूह बनाएं
कीमतें.नामकरण.नामकरण का प्रकार
होना
अधिकतम(मूल्य.कीमत) > 1000

इसके अनुसार क्रमबद्ध करें

ORDER BY ऑपरेटर किसी क्वेरी के परिणाम को सॉर्ट करता है। यह सुनिश्चित करने के लिए कि रिकॉर्ड एक सुसंगत क्रम में प्रदर्शित हों, ऑटो ऑर्डर का उपयोग किया जाता है। आदिम प्रकारों को क्रमबद्ध किया जाता है सामान्य नियम. संदर्भ प्रकार GUID द्वारा क्रमबद्ध किए जाते हैं।

नाम के अनुसार क्रमबद्ध कर्मचारियों की सूची प्राप्त करने का एक उदाहरण:

चुनना
कर्मचारी.नाम जैसा नाम
से
निर्देशिका.कर्मचारी कैसे कर्मचारी
इसके अनुसार क्रमबद्ध करें
नाम
ऑटो ऑर्डर

अन्य 1सी क्वेरी भाषा निर्माण

  • मिलाना- दो प्रश्नों के परिणाम एक में।
  • सब कुछ मिलाओ- COMBINE के समान, लेकिन समान पंक्तियों को समूहीकृत किए बिना।
  • खाली टेबल- कभी-कभी खाली नेस्टेड तालिका को निर्दिष्ट करने के लिए प्रश्नों को जोड़ते समय उपयोग किया जाता है।
  • जगह- जटिल 1सी प्रश्नों को अनुकूलित करने के लिए एक अस्थायी तालिका बनाता है। ऐसे अनुरोधों को बैच अनुरोध कहा जाता है।

क्वेरी भाषा विशेषताएँ

  • सबस्ट्रिंगएक स्ट्रिंग को एक निर्दिष्ट स्थान से वर्णों की एक निर्दिष्ट संख्या तक छोटा कर देता है।
  • वर्ष...दूसराआपको संख्यात्मक प्रकार का चयनित मान प्राप्त करने की अनुमति देता है। इनपुट पैरामीटर दिनांक है.
  • काल की शुरुआत और काल का अंततिथियों के साथ काम करते समय उपयोग किया जाता है। अवधि का प्रकार (दिन, महीना, वर्ष, आदि) एक अतिरिक्त पैरामीटर के रूप में इंगित किया गया है।
  • दिनांक जोड़ेंआपको किसी दिनांक में निर्दिष्ट समय जोड़ने या घटाने की अनुमति देता है खास प्रकार का(दूसरा, मिनट, दिन, आदि)।
  • विभेदित दिनांकदो तिथियों के बीच अंतर निर्धारित करता है, जो आउटपुट मान के प्रकार (दिन, वर्ष, महीना, आदि) को दर्शाता है।
  • शून्य हैलुप्त मान को निर्दिष्ट अभिव्यक्ति से बदल देता है।
  • प्रतिनिधित्व और प्रतिनिधित्वलिंकनिर्दिष्ट फ़ील्ड का एक स्ट्रिंग प्रतिनिधित्व प्राप्त करें। क्रमशः किसी भी मान और केवल संदर्भ मान पर लागू करें।
  • प्रकार, प्रकार मानइनपुट पैरामीटर के प्रकार को निर्धारित करने के लिए उपयोग किया जाता है।
  • जोड़नाविशेषता मान प्रकार के लिए एक तार्किक तुलना ऑपरेटर है।
  • अभिव्यक्त करनाकिसी मान को वांछित प्रकार में परिवर्तित करने के लिए उपयोग किया जाता है।
  • दिनांक समयसे "दिनांक" प्रकार का मान प्राप्त होता है संख्यात्मक मूल्य(वर्ष, महीना, दिन, घंटा, मिनट, दूसरा)।
  • अर्थ 1सी अनुरोध में इसका उपयोग पूर्वनिर्धारित मूल्यों को इंगित करने के लिए किया जाता है - निर्देशिका, गणना, विशेषताओं के प्रकार की योजना। उपयोग उदाहरण: " जहां कानूनी व्यक्ति = मूल्य (गणना। कानूनी व्यक्ति। व्यक्तिगत)«.

क्वेरी बिल्डर

1C के साथ क्वेरीज़ बनाने के लिए एक बहुत ही सुविधाजनक अंतर्निहित तंत्र है - क्वेरी डिज़ाइनर। इसमें निम्नलिखित मुख्य टैब हैं:

  • "टेबल्स और फ़ील्ड्स" - इसमें वे फ़ील्ड शामिल हैं जिन्हें चुनने की आवश्यकता है और उनके स्रोत।
  • "कनेक्शन" - कनेक्शन संरचना के लिए शर्तों का वर्णन करता है।
  • "ग्रुपिंग" - इसमें ग्रुपिंग संरचनाओं और उनके आधार पर सारांशित क्षेत्रों का विवरण शामिल है।
  • "शर्तें" - अनुरोध में डेटा का चयन करने के लिए जिम्मेदार है।
  • "उन्नत" - अतिरिक्त क्वेरी पैरामीटर, जैसे "SELECT" कमांड के लिए कीवर्ड, आदि।
  • "जोड़/उपनाम" - तालिकाओं में शामिल होने की संभावनाओं को दर्शाया गया है और उपनाम निर्दिष्ट किए गए हैं ("कैसे" निर्माण)।
  • "ऑर्डर" प्रश्नों के परिणाम को क्रमबद्ध करने के लिए जिम्मेदार है।
  • "कुल" - "समूहन" टैब के समान, लेकिन "कुल" निर्माण के लिए उपयोग किया जाता है।

अनुरोध का पाठ निचले बाएँ कोने में "अनुरोध" बटन पर क्लिक करके देखा जा सकता है। इस रूप में, इसे मैन्युअल रूप से ठीक किया जा सकता है या कॉपी किया जा सकता है।


कंसोल का अनुरोध करें

एंटरप्राइज़ मोड में किसी क्वेरी के परिणाम को शीघ्रता से देखने के लिए, या जटिल क्वेरीज़ को डीबग करने के लिए, उपयोग करें। इसमें अनुरोध का पाठ शामिल है, पैरामीटर सेट करता है, और परिणाम प्रदर्शित करता है।

आप क्वेरी कंसोल को ITS डिस्क पर या इसके माध्यम से डाउनलोड कर सकते हैं।

नमस्कार, ब्लॉग साइट के प्रिय पाठकों! आज, उदाहरणों की सहायता से, हम देखेंगे कि आप व्यवहार में 1C क्वेरी फ़ंक्शन का उपयोग कैसे कर सकते हैं सबस्ट्रिंग. इस फ़ंक्शन का उपयोग न केवल सरल प्रश्नों में उपयोगी है, जिसे हम यहां देखेंगे, बल्कि प्रश्नों और प्रश्नों में भी उपयोगी है।

कार्य वह था जो दस्तावेज़ विवरण से आवश्यक था अनुपालनदो पंक्तियों का चयन करें और उनके अनुसार क्रमबद्ध करें। इस प्रकार के खाते का अनुपालन: 779000/004599। मैं इस मान को दो भागों में कैसे विभाजित कर सकता हूँ?

SUBSTRING फ़ंक्शन के तीन पैरामीटर हैं। पहला स्रोत स्ट्रिंग है जिससे आप वर्णों का हिस्सा निकालना चाहते हैं - एक सबस्ट्रिंग। यह स्पष्ट है कि इस पैरामीटर का मान प्रकार है रेखा. ध्यान दें, यह एक बहुत ही महत्वपूर्ण नोट है, यदि आप स्ट्रिंग के अलावा पहले पैरामीटर के प्रकार का उपयोग करते हैं, तो फ़ंक्शन काम नहीं करेगा, अनुरोध एक त्रुटि उत्पन्न करेगा! दूसरा पैरामीटर स्रोत स्ट्रिंग में वर्ण की स्थिति निर्धारित करता है जिससे स्ट्रिंग के भाग का चयन शुरू होता है, और तीसरा चयनित सबस्ट्रिंग की लंबाई है। दूसरे और तीसरे पैरामीटर के लिए मान प्रकार संख्या है।

आइए अभ्यास की ओर आगे बढ़ें:

नाम के रूप में विशिष्ट.रिकॉर्डर का चयन करें, सबस्ट्रिंग(विशिष्ट.रजिस्ट्रार.अनुसार.नाम, 1, 6) एएस लागत खाता, सबस्ट्रिंग(सामान्य रजिस्ट्रार नाम के अनुसार, 8, 11) विभाग के अनुसार, राशि (चयन करें जब महीना (सामान्य अवधि) = 3, फिर व्यक्त करें (सामान्य राशि संख्या के अनुसार (15, 2)) अन्यथा 0 अंत) रजिस्टर अकाउंटिंग से मार्च के अनुसार .विशिष्ट जैसा कि विशिष्ट है जहां विशिष्ट है। खाताकेटी = &खाताकेटी और विशिष्ट। &अवधिप्रारंभ और औरअवधिएनग्रुप के बीच की अवधि सबस्ट्रिंग(विशिष्ट.रिकॉर्डर.अनुसार.नाम, 1, 6), सबस्ट्रिंग(विशिष्ट.रजिस्ट्रार.अनुसार.नाम, 8, 11), विशिष्ट.रजिस्ट्रार आदेश विभाग द्वारा, लागत खाता

इस क्वेरी का परिणाम निम्नलिखित है:

नाम लागत खाता विभाग मार्च
आउटगोइंग भुगतान आदेश 000000000319 03/01/2010 14:42:54 से 779000 004599 9 000
03/02/2010 12:07:34 से आउटगोइंग भुगतान आदेश 000000000320 779000 004599 4 721,6
आउटगोइंग भुगतान आदेश 00000000203 03/01/2010 12:28:52 से 786500 004599 987 614,51
आउटगोइंग भुगतान आदेश 000000000227 03/03/2010 14:16:00 से 786500 004599 400 000
आउटगोइंग भुगतान आदेश 000000000238 03/05/2010 12:37:57 से 732000 004600 5 400
आउटगोइंग भुगतान आदेश 000000000197 03/01/2010 11:53:11 से 732500 004600 12 100
आउटगोइंग भुगतान आदेश 00000000198 03/01/2010 11:55:39 से 732500 004600 12 100
आउटगोइंग भुगतान आदेश 000000000279 03/26/2010 0:00:00 से 734100 004600 19 609
आउटगोइंग भुगतान आदेश 000000000287 03/29/2010 14:15:36 से 734100 004600 55 300
आउटगोइंग भुगतान आदेश 000000000291 03/30/2010 11:01:10 से 734100 004600 18 090
आउटगोइंग भुगतान आदेश 00000000268 दिनांक 03/18/2010 10:34:25 738000 004600 10 050
आउटगोइंग भुगतान आदेश 00000000276 दिनांक 03/18/2010 12:20:20 750400 004600 13 060,98
आउटगोइंग भुगतान आदेश 000000000281 03/29/2010 12:33:46 से 750400 004600 555 645,41
आउटगोइंग भुगतान आदेश 000000000234 03/04/2010 12:21:55 से 754450 004600 24 120
आउटगोइंग भुगतान आदेश 000000000290 03/30/2010 10:44:39 से 754450 004600 100 000
आउटगोइंग भुगतान आदेश 00000000240 03/09/2010 10:53:24 से 786300 004600 20 800
आउटगोइंग भुगतान आदेश 00000000269 दिनांक 03/18/2010 10:58:04 786300 004600 61 012
आउटगोइंग भुगतान आदेश 000000000289 03/30/2010 9:27:14 से 786300 004600 6 000
03/03/2010 12:13:38 से आउटगोइंग भुगतान आदेश 000000000223 786500 004600 36 000
आउटगोइंग भुगतान आदेश 000000000228 03/04/2010 9:52:35 से 786500 004600 378 138,85
आउटगोइंग भुगतान आदेश 000000000229 03/04/2010 9:57:50 से 786503 004600 126 117,75
आउटगोइंग भुगतान आदेश 00000000200 03/01/2010 11:58:06 से 754422 004762 63 000
आउटगोइंग भुगतान आदेश 000000000286 03/29/2010 14:10:18 से 764422 004762 10 000
आउटगोइंग भुगतान आदेश 00000000267 03/17/2010 0:00:00 से 764423 004762 464 370
आउटगोइंग भुगतान आदेश 000000000261 03/15/2010 11:16:28 से 764522 004762 81 357

इसलिए, यदि हम लाइन 779000/004599 लेते हैं, तो SUBSTRING(Typical.Recorder.Respective.Name, 1, 6) लाइन "779000" को हाइलाइट करेगा। एक सबस्ट्रिंग (विशिष्ट.रिकॉर्डर.संबंधित.नाम, 8, 11) "004599" आउटपुट देगा।

उसी क्वेरी में, अभिव्यक्ति का उपयोग किया जाता है:

योग(विकल्प जब महीना(सामान्य.अवधि) = 3 तब व्यक्त करें(सामान्य.संख्या के रूप में योग(15, 2)) अन्यथा 0 अंत) जैसा मार्च

उसी कार्य में, महीनों के नाम और उनकी राशियों के साथ नए कॉलम जोड़ना आवश्यक था। यह अभिव्यक्ति इस समस्या का समाधान करती है. यदि आपको अन्य महीनों का उपयोग करने की आवश्यकता है, उदाहरण के लिए जनवरी, तो अभिव्यक्ति को बदलें:

राशि(विकल्प जब महीना(विशिष्ट.अवधि)= 1 फिर व्यक्त करें (सामान्यतः संख्या के रूप में योग (15, 2)) अन्यथा 0 अंत) के रूप में जनवरी

मैं एक अनुरोध पाठ का उदाहरण दूंगा जिसमें मार्च से फरवरी तक शुरू होने वाले चक्र का उपयोग करके महीने के फ़ील्ड (बोल्ड में) बनाए जाते हैं।

क्वेरी टेक्स्ट = " |SELECT |Typical.Registrar AS Name, |SUB-STRING(Typical.Registrar.Respective.Name, 1, 6) AS लागत खाता, |SUB-STRING(Typical.Registrar.Respective.Name, 8, 11) ) एएस विभाग,"; एसएच के लिए = 1 से 12 चक्र यदि एसएच< 11 Тогда Мес = Сч + 2; Иначе Мес = Сч - 10; КонецЕсли; ТекстЗапроса = ТекстЗапроса + " |СУММА(ВЫБОР | КОГДА МЕСЯЦ(Типовой.Период) = " + Мес + " | ТОГДА ВЫРАЗИТЬ(Типовой.Сумма КАК ЧИСЛО(15, 2)) | ИНАЧЕ 0 |КОНЕЦ) КАК Поле" + Мес + ?(Сч=12,"",","); КонецЦикла; क्वेरी टेक्स्ट = क्वेरी टेक्स्ट + " | FROM | अकाउंटिंग रजिस्टर।" + AccountingRegisterName + ".MovementsSSubconto(| &StartPeriod, | &EndPeriod,"; विवरण पर प्रतिबंधों की रेखा = " (गतिविधि = सत्य) और (पदानुक्रम में खाता (और विश्लेषण का खाता))"; क्वेरी टेक्स्ट = अनुरोध का पाठ + सीमाओं की रेखा विवरण पर + "|) विशिष्ट रूप में |"; क्वेरी टेक्स्ट = क्वेरी टेक्स्ट + " | कहां | टिपिकल.अकाउंटसीटी = &एनालिसिसअकाउंट | और टिपिकल.पीरियड बीच &स्टार्टपीरियड और एंडएंडपीरियड | ग्रुप बाय | सबस्ट्रिंग(टाइपिकल.रिकॉर्डर.रेस्प.नाम, 1, 6), | सबस्ट्रिंग(टाइपिकल.रजिस्ट्रार। सम्मान नाम, 8, 11), |. विशिष्ट.रजिस्ट्रार |. विभाग द्वारा, |.

इसलिए, ऊपर दिए गए कोड (बोल्ड में) का उपयोग करके, महीनों के साथ अनुरोध के कुछ हिस्से प्रदर्शित किए जाते हैं। इस प्रकार, महीनों के नाम और उनके लिए राशि के साथ नए कॉलम जोड़े जाते हैं।

1सी प्रश्नों में स्ट्रिंग्स के साथ काम करने के लिए कुछ तंत्र हैं। सबसे पहले, पंक्तियाँ जोड़ी जा सकती हैं. दूसरे, आप एक स्ट्रिंग से एक सबस्ट्रिंग ले सकते हैं। तीसरा, स्ट्रिंग्स की तुलना पैटर्न सहित की जा सकती है। संभवतः स्ट्रिंग्स के साथ इतना ही किया जा सकता है।

स्ट्रिंग जोड़

किसी क्वेरी में पंक्तियाँ जोड़ने के लिए, "+" ऑपरेशन का उपयोग किया जाता है। आप केवल सीमित लंबाई के तार ही जोड़ सकते हैं।

"नाम:" + प्रतिपक्षों का चयन करें। निर्देशिका से प्रतिपक्षों के रूप में नाम, जहां लिंक = &लिंक

सबस्ट्रिंग फ़ंक्शन

सबस्ट्रिंग(<Строка>, <НачальнаяПозиция>, <Длина>)

ऑब्जेक्ट मॉडल से पर्यावरण() फ़ंक्शन का एक एनालॉग। सबस्ट्रिंग() फ़ंक्शन को स्ट्रिंग डेटा पर लागू किया जा सकता है और आपको एक टुकड़ा चुनने की अनुमति मिलती है <Строки> , वर्ण संख्या से शुरू करते हुए <НачальнаяПозиция> (एक पंक्ति में वर्णों को 1 से शुरू करके क्रमांकित किया जाता है) और लंबाई <Длина> पात्र। फ़ंक्शन गणना के परिणाम में एक चर-लंबाई स्ट्रिंग प्रकार है, और यदि लंबाई असीमित मानी जाएगी <Строка> असीमित लंबाई और पैरामीटर है <Длина> कोई स्थिरांक नहीं है या 1024 से अधिक नहीं है।

यदि स्ट्रिंग की लंबाई दूसरे पैरामीटर में निर्दिष्ट से कम है, तो फ़ंक्शन एक खाली स्ट्रिंग लौटाएगा।

ध्यान!असीमित लंबाई की स्ट्रिंग को सीमित लंबाई की स्ट्रिंग में बदलने के लिए SUBSTRING() फ़ंक्शन का उपयोग करने की अनुशंसा नहीं की जाती है। इसके बजाय, कास्ट ऑपरेटर एक्सप्रेस() का उपयोग करना बेहतर है।

कार्य समान

यदि हमें यह सुनिश्चित करने की आवश्यकता है कि एक स्ट्रिंग विशेषता कुछ मानदंडों को पूरा करती है, तो हम इसकी तुलना करते हैं:

प्रतिपक्षों का चयन करें। निर्देशिका से कॉलम 1 में प्रतिपक्षों के रूप में नाम चुनें, जहां नाम = "गज़प्रोम" है।

लेकिन क्या होगा यदि आपको अधिक सूक्ष्म तुलना की आवश्यकता हो? सिर्फ समानता या असमानता नहीं, बल्कि एक निश्चित पैटर्न की समानता? यह बिल्कुल वही है जिसके लिए SIMILAR फ़ंक्शन बनाया गया था।

जैसे - एक पैटर्न की समानता के लिए एक स्ट्रिंग की जाँच करने के लिए ऑपरेटर। SQL में LIKE का एनालॉग।

SIMILAR ऑपरेटर आपको बाईं ओर निर्दिष्ट अभिव्यक्ति के मान की तुलना दाईं ओर निर्दिष्ट पैटर्न स्ट्रिंग से करने की अनुमति देता है। अभिव्यक्ति का मान स्ट्रिंग प्रकार का होना चाहिए। यदि अभिव्यक्ति का मान पैटर्न से मेल खाता है, तो ऑपरेटर का परिणाम सत्य होगा, अन्यथा यह गलत होगा।

टेम्प्लेट स्ट्रिंग में निम्नलिखित वर्ण सेवा वर्ण हैं और इनका अर्थ स्ट्रिंग वर्ण से भिन्न है:

  • % (प्रतिशत): एक क्रम जिसमें किसी भी संख्या में मनमाने वर्ण हों;
  • _ (अंडरस्कोर): एक मनमाना वर्ण;
  • […] (वर्गाकार कोष्ठक में एक या अधिक वर्ण): वर्गाकार कोष्ठक के अंदर सूचीबद्ध कोई एकल वर्ण। गणना में श्रेणियां शामिल हो सकती हैं, उदाहरण के लिए a-z, जिसका अर्थ है श्रेणी में शामिल एक मनमाना वर्ण, जिसमें सीमा के सिरे भी शामिल हैं;
  • [^...] (वर्ग कोष्ठक में एक निषेध चिह्न जिसके बाद एक या अधिक वर्ण होते हैं): निषेध चिह्न के बाद सूचीबद्ध वर्णों के अलावा कोई एकल वर्ण।

किसी भी अन्य प्रतीक का अर्थ स्वयं होता है और उस पर कोई अतिरिक्त भार नहीं होता। यदि सूचीबद्ध वर्णों में से किसी एक को स्वयं के रूप में लिखने की आवश्यकता है, तो उसके पहले लिखा जाना चाहिए<Спецсимвол>. खुद<Спецсимвол>(कोई भी उपयुक्त वर्ण) को विशेष वर्ण कीवर्ड के बाद उसी कथन में परिभाषित किया गया है।