MySQL [डुप्लिकेट] में एक स्थान के साथ एक कॉलम नाम का चयन कैसे करें


93

मैं एक ऐसे प्रोजेक्ट पर काम कर रहा हूं, जहां एक और डेवलपर ने कॉलम नाम जैसे एक टेबल बनाया है 'Business Name'। वह दो शब्दों के बीच का स्थान है। अगर मैं SELECT'बिजनेस नेम' के साथ कोई स्टेटमेंट चलाता हूं तो यह कहता है कि 'बिजनेस' नाम का कोई कॉलम नहीं है।

इस समस्या का समाधान किस प्रकार से किया जा सकता है?


मेरे पास ठीक तरह से टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है, इसलिए अंत में टैग किया गया है: टिप्पणियों में ऊपर दिए गए समाधान: `कष्टप्रद_शौचालय`` व्यापार का नाम` मेरे लिए एक बयान में mySQL में काम नहीं किया। टेबल के नाम पर पीछे के कोट्स को छोड़ने से काम चल गया: यानी कष्टप्रद_रूप। `व्यापार का नाम`
टिम

जवाबों:


163

आम तौर पर पहला कदम यह नहीं है कि पहली जगह में, लेकिन अगर यह पहले से ही किया गया है, तो आपको अपने कॉलम नामों को ठीक से उद्धृत करने का सहारा लेना होगा:

SELECT `Business Name` FROM annoying_table

आमतौर पर इस तरह की चीजें उन लोगों द्वारा बनाई जाती हैं, जिन्होंने माइक्रोसॉफ्ट एक्सेस जैसी किसी चीज का इस्तेमाल किया है और अपनी बात करने के लिए हमेशा GUI का इस्तेमाल करते हैं।


@tadman यदि मैं आपकी क्वेरी को कॉपी और पेस्ट करता हूं तो यह काम करता है, लेकिन यदि मैं कीबोर्ड से एकल उद्धरण टाइप करता हूं तो यह काम नहीं करता है। अर्थात।
सेलेक्ट

17
यह इसलिए है क्योंकि यह नहीं एकल उद्धरण है बल्कि है टिकटिक प्रतीक हैं, जो आप आमतौर पर करने के लिए अपने कीबोर्ड पर पा सकते हैं से अंकों 1. छोड़ दिया
peterm

5
तीन प्रकार के उद्धरण हैं, सिंगल ', डबल "और बैकवर्ड `। MySQL में पहले दो बराबर हैं और परस्पर उपयोग किया जा सकता है। यह हमेशा अन्य प्लेटफार्मों पर नहीं होता है, और विशेष रूप से पोस्टग्रैज उन्हें अलग तरीके से व्यवहार करता है। बैकटिक्स का उपयोग केवल डेटाबेस या कॉलम नाम से बचने के लिए किया जाता है।
तदमन

कोष्ठक [] मेरे लिए काम नहीं किया। कोई त्रुटि नहीं है लेकिन अभी इसे प्रदर्शित नहीं किया है। `दूसरी ओर महान काम किया।
जय

1
@ रॉबर्ट तब आप इसे इस तरह से लिखेंगे: `कष्टप्रद_समर्थन`` व्यापार नाम`।
एरिक Eरपंजक

20

यदि डबल कोट्स काम नहीं करते हैं, तो वर्गाकार कोष्ठकों के भीतर स्ट्रिंग सहित कोशिश करें।

उदाहरण के लिए:

SELECT "Business Name","Other Name" FROM your_Table

के रूप में बदला जा सकता है

SELECT [Business Name],[Other Name] FROM your_Table


17

आपको सिंगल कोट्स के बजाय बैकटिक का उपयोग करना होगा:

एकल बोली - 'Business Name'- गलत

बैकटिक - `Business Name`- सही


3

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


0

मैं एक एमएस एक्सेस समस्या के साथ यहां आया था।

बैकस्टिक्स MySQL के लिए अच्छे हैं, लेकिन वे अजीब त्रुटियां पैदा करते हैं, जैसे एमएस एक्सेस में "अमान्य क्वेरी नाम: Query1", केवल एमएस एक्सेस के लिए, वर्ग कोष्ठक का उपयोग करें:

इसे ऐसा दिखना चाहिए

SELECT Customer.[Customer ID], Customer.[Full Name] ...

-3

मुझे लगता है कि डबल कोट्स भी काम करते हैं:

SELECT "Business Name","Other Name" FROM your_Table

लेकिन मैंने केवल एसक्यूएल सर्वर पर परीक्षण किया है कि एमएस SQL ​​सर्वर के साथ काम करने के मामले में mySQL नहीं है।


5
यह हमेशा स्ट्रिंग "बिजनेस नेम" का चयन करेगा, न कि कॉलम की सामग्री का।
जोनासबी

@JonasB कृपया फिर से जाँच करें, मैंने दोहरे उद्धरण का प्रयोग किया है एकल उद्धरण नहीं .... एकल उद्धरण स्ट्रिंग में परिणाम देगा, डबल उद्धरण अभ्यस्त।
Vin.X

प्रश्न विशेष रूप से MySQL के बारे में था और मानक सेटिंग्स के साथ एक MySQL सर्वर पर, दोहरे उद्धरण और एकल उद्धरण समकक्ष हैं। आगे की जानकारी के लिए यह उत्तर देखें कि MySQL में दोहरे उद्धरण चिह्नों का उपयोग करना सिर्फ एक बुरा विचार क्यों है: stackoverflow.com/a/14123649/4172652
जोनासबी
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.