2010-01-02 13 views

उत्तर

107

सिंगल कोट्स का उपयोग SQL में स्ट्रिंग की शुरुआत और अंत को इंगित करने के लिए किया जाता है। डबल कोट्स आमतौर पर SQL में उपयोग नहीं किए जाते हैं, लेकिन यह डेटाबेस से डेटाबेस में भिन्न हो सकते हैं।

सिंगल कोट्स का उपयोग करने के लिए चिपकें।

वैसे भी प्राथमिक उपयोग है। आप कॉलम उपनाम के लिए सिंगल कोट्स का उपयोग कर सकते हैं- जहां आप कॉलम नाम को अपने एप्लिकेशन कोड में संदर्भित करना चाहते हैं, जिसे कॉलम वास्तव में डेटाबेस में क्या कहा जाता है। उदाहरण के लिए: PRODUCT.idproduct_id के रूप में अधिक से पढ़े जा सकेंगे, ताकि आप निम्नलिखित में से किसी का उपयोग करें:

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

या तो ओरेकल, एसक्यूएल सर्वर, MySQL में काम करता है ... लेकिन मैं कुछ पता ने कहा है कि एकल उद्धरण दृष्टिकोण का उपयोग करते समय टॉड आईडीई कुछ दुःख देता है।

आपको कॉलम उपनाम में स्पेस कैरेक्टर, उदाहरण के लिए, product id शामिल होने पर सिंगल कोट्स का उपयोग करना होगा, लेकिन कॉलम उपनाम के लिए एक से अधिक शब्द होने की अनुशंसा नहीं की जाती है।

+22

डबल कोट्स आमतौर पर नामों को ऑब्जेक्ट करने के लिए उपयोग किए जाते हैं (उदा। कॉलम नाम "पहला नाम")। वह एसक्यूएल-9 2 मानक का हिस्सा है। – LukLed

+0

@ लुकलेड: आपका मतलब कॉलम * उपनाम * है? यदि आप ऐसा कहते हैं - मैंने कभी भी देखा है और/या 'AS स्तंभ_नाम' नोटेशन का उपयोग किया है, या जहां आप स्तंभ संदर्भ के बाद ** एकल उद्धरण ** में उपनाम प्रदान करते हैं। कॉलम उपनाम में एक स्पेस कैरेक्टर (जिसे मैं अनुशंसा नहीं करता) है तो एकल कोट्स में उपनाम को संलग्न करना होगा। –

+17

नहीं। मेरा मतलब स्तंभ नाम था, लेकिन यह उपनामों से भी संबंधित है। मैं एसक्यूएल-9 2 मानक के कारण, असामान्य पात्रों वाले उपनामों और नामों के लिए डबल उद्धरण चिह्नों का उपयोग करने की सलाह दूंगा। 'चयन करें' उपयोगकर्ता के उपयोगकर्ताओं से SQL सर्वर में काम नहीं करता है, लेकिन उपयोगकर्ता से "चयन करें * " उपयोगकर्ता "करता है। – LukLed

31

एएनएसआई एसक्यूएल में, डबल कोट्स ऑब्जेक्ट नामों (उदाहरण के लिए टेबल) उद्धृत करते हैं जो उन्हें अन्यथा अनुमत नहीं होने वाले पात्रों को रखने की अनुमति देता है, या आरक्षित शब्दों के समान ही हो (इस से बचें, वास्तव में)।

एकल उद्धरण तारों के लिए हैं।

हालांकि, MySQL मानक के लिए अनजान है (जब तक कि इसका SQL_MODE परिवर्तित नहीं हो जाता) और उन्हें तारों के लिए एक दूसरे के लिए उपयोग करने की अनुमति मिलती है।

इसके अलावा, साइबेस और माइक्रोसॉफ्ट पहचानकर्ता उद्धरण के लिए स्क्वायर ब्रैकेट का भी उपयोग करता है।

तो यह थोड़ा विक्रेता विशिष्ट है।

ऐसे Postgres और आईबीएम जैसे

अन्य डाटाबेस वास्तव में एएनएसआई मानक का पालन :)

+4

माईएसक्ल पहचानकर्ता उद्धरण के लिए बैकटिक का उपयोग करता है। (केवल पूरा होने के लिए) – dar7yl

+0

उदाहरण: यदि आप पोस्टग्रेस कॉलम "दिनांक" (जो आरक्षित है) नाम देना चाहते हैं, तो आपको इसे दोबारा उद्धृत करने की आवश्यकता होगी। – fny

55

एकल उद्धरण चिह्न एक स्ट्रिंग निरंतर या दिनांक/समय निरंतर परिसीमित।

उदाहरण के लिए डबल कोट्स डिलीमिट पहचानकर्ता टेबल नाम या कॉलम नाम। यह आम तौर पर केवल तब आवश्यक होता है जब आपका पहचानकर्ता सरल पहचानकर्ताओं के नियमों को फिट नहीं करता है।

यह भी देखें:

SET GLOBAL SQL_MODE=ANSI_QUOTES 

आप कर सकते हैं Microsoft SQL सर्वर डबल उद्धरण का उपयोग करें:

आप MySQL एएनएसआई मानक प्रति का उपयोग डबल उद्धरण कर सकते हैं एएनएसआई मानक के अनुसार:

SET QUOTED_IDENTIFIER ON 
35
  • [एस] चिमनी उद्धरण [एस] trings के लिए कर रहे हैं; [डी] दोहरा उद्धरण [डी] एटबेस पहचानकर्ताओं के लिए हैं;
  • ` प्रतीक रूप में ही है" प्रतीक। आप उपयोग कर सकते हैं " ANSI_QUOTES साथ सक्षम होना चाहिए।

    • एकल उद्धरण चिह्न तार (एक बात)
    • डबल उद्धरण टेबल नामों और स्तंभ नाम (दो बातें)

    यह वह जगह है के लिए कर रहे हैं के लिए कर रहे हैं:

+4

स्पष्टीकरण के लिए, बैकटिक (') का उपयोग पहचानकर्ताओं को सीमित करने के लिए किया जा सकता है चाहे ANSI_QUOTES सक्षम है या नहीं, लेकिन यदि ANSI_QUOTES सक्षम है, तो" आप शाब्दिक तारों को उद्धृत करने के लिए डबल उद्धरण चिह्नों का उपयोग नहीं कर सकते हैं, क्योंकि इसे पहचानकर्ता के रूप में व्याख्या किया जाता है। " ([स्रोत] (https://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_ansi_quotes))। (यह सब मानते हैं कि आप MySQL, दिमाग के बारे में बात कर रहे हैं।) – Sam

+0

अच्छी टिप्पणी, धन्यवाद! –

1

मैं इस स्मरक का उपयोग चश्मा के अनुसार 100% सही नहीं है, लेकिन यह निमोनिक मुझे (इंसान) की मदद करता है।

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

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