एसक्यूएल में डबल कोलन (: :) संकेतन


89

किसी के कोड को उठाया है और यह एक खंड का एक हिस्सा है, जहां किसी को भी पता है कि डबल कोलन क्या इंगित करता है?

b.date_completed >  a.dc::date + INTERVAL '1 DAY 7:20:00'


जवाबों:


67

यह RDBMS के आधार पर भिन्न होता है, लेकिन अगर मैं सही अनुमान लगाता हूं, तो यह PostgreSQL है, जिस स्थिति में दिनांक प्रकार में ::कनवर्ट करता a.dcहै date

अन्य स्वादों में ...

MS SQL सर्वर 2000 में:

अंतर्निहित उपयोगकर्ता-परिभाषित फ़ंक्शंस के लिए जो एक तालिका लौटाते हैं, फ़ंक्शन नाम को एक अग्रणी डबल कोलोन के साथ निर्दिष्ट किया जाना चाहिए (: :) इसे उपयोगकर्ता-परिभाषित फ़ंक्शंस से अलग करने के लिए जो अंतर्निहित नहीं हैं। इसे एक डेटाबेस या मालिक की योग्यता के साथ एक-भाग के नाम के रूप में भी निर्दिष्ट किया जाना चाहिए। उदाहरण के लिए: SELECT * FROM :: fn_helpcollations () b .. अंतर्निहित उपयोगकर्ता-परिभाषित कार्यों के लिए जो एक स्केलर मान लौटाते हैं, फ़ंक्शन नाम को एक-भाग नाम (डेटाबेस या स्वामी निर्दिष्ट न करें) के रूप में निर्दिष्ट किया जाना चाहिए। एक अग्रणी डबल कोलन निर्दिष्ट न करें: (:)।

MS SQL सर्वर 2005 में:

यूडीएफ के लिए डबल-कॉलन्स की आवश्यकता नहीं है जो एक तालिका लौटाते हैं।

तथापि...

एसक्यूएल सर्वर 2005 में डबल-कॉलन की आवश्यकता होती है जब स्कीमा, प्रमाण पत्र, समापन बिंदु, और कुछ अन्य सेकुलर पर अनुमति प्रदान करते हैं।

साथ ही साथ...

उपयोगकर्ता-परिभाषित प्रकारों का उपयोग करते समय, प्रकार के स्थिर तरीकों को डबल-कोलोन सिंटैक्स का उपयोग करके बुलाया जाना चाहिए।

स्रोत: BOL और Kalen Delaney का ब्लॉग


मैं SQL 2008 MCTS अभ्यास परीक्षा में UDF के साथ उपयोग किए गए इस सिंटैक्स में आया था, यह पुस्तक में कहीं भी उल्लेखित नहीं है! समझाने के लिए धन्यवाद
सोफिया

27

इस मामले में, यह एक तिथि प्रकार का कलाकार है। :: एक प्रकार की कास्ट है जिसे CAST (अभिव्यक्ति AS प्रकार) के रूप में भी दर्शाया जा सकता है।


यदि आप जानते हैं कि निश्चित रूप से तो शायद आप जानते हैं कि यह स्क्रिप्ट RDBMS किस लिए है?
एंड्री एम

मेरे लिए PostgreSQL की तरह दिखता है। क्या आप ऐसे किसी विकल्प के बारे में जानते हैं जिसका एक ही वाक्य विन्यास हो?
माइकल डीन

मैं कुछ आरडीबीएमएस के बारे में जानता हूं जो दोहरे बृहदान्त्र संकेतन का समर्थन करते हैं, और मुझे कुछ अन्य लोगों का पता है जो INTERVALसमर्थन की सुविधा देते हैं । यह कोड का पहला टुकड़ा मैंने कभी देखा है जो दोनों को मिलाता है। मैं बिलकुल उत्सुक था। उत्तर के लिए धन्यवाद।
एंड्री एम

14

यह एक CASTऑपरेशन (एक तिथि प्रकार के लिए डाली) है।

उदाहरण:

SELECT now()::timestamp(0);

के बराबर है:

SELECT 
    CAST (now() AS timestamp(0));

वे दोनों निम्नलिखित प्रारूप में कास्टिंग now()करते हैं timestamp:YYYY-MM-DD HH:MM:SS


एक और सरल उदाहरण हो सकता है: select 1.2::integerजो परिणाम के रूप में परिणाम देगा 1
थीमफील्ड

0

यह शायद एक कास्ट है, a.dcटाइप करने के लिए परिवर्तित करना date

IBM Informix डायनेमिक सर्वर (IDS) इस तरह से काम करेगा - लेकिन अंत में INTERVAL संकेतन IDS के लिए मान्य नहीं है, इसलिए संभवतः यह एक और DBMS (शायद PostgreSQL ) है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.