2011-11-02 12 views
9

मेरे एप्लिकेशन का उपयोग करने वाले डेटाबेस में रिक्त स्थान वाले फ़ील्ड नाम हैं। मुझे विश्वास है कि यह मेरी समस्या का कारण है। यहां एक सामान्य क्वेरी है:एसक्यूएल क्वेरी सिंटेक्स त्रुटि - फ़ील्ड नामों में रिक्त स्थान

SELECT * FROM 'OV2 BAS' AS bas 
INNER JOIN 'OV2 RefID' AS ids ON 'bas.Ref ID' = 'ids.Ref ID' 
WHERE ids.ENUM_H = 'TDischarge'; 

मैं फ़ील्ड नामों में रिक्त स्थान से कैसे निपटूं? धन्यवाद।

अतिरिक्त सूचना

यह एमएस एक्सेस 2007 (Microsoft.ACE.OLEDB.12.0) के साथ किए गए एक डेटाबेस का उपयोग करने के लिए है।

+1

से 'Eng इकाइयों' का चयन करें आप किस आरडीबीएमएस का उपयोग कर रहे हैं? –

+0

यह एमएस एक्सेस 2007 (माइक्रोसॉफ्ट.एसीई.ओएलडीबी.12.0) के साथ किए गए डेटाबेस तक पहुंचने के लिए है। –

उत्तर

12

मुझे नहीं लगता कि आप वास्तविक तालिका नाम के आसपास उद्धरण का उपयोग कर सकते हैं; केवल वह नाम जिसे आप असाइन करते हैं। मैं तालिका को ब्रैकेट में लपेटूंगा: [OV2 BAS]

आप भी अपने जुड़ने वाले वाक्यविन्यास के चारों ओर उद्धरण नहीं डाल सकते हैं। ऐसा करें:

SELECT * FROM [OV2 BAS] AS bas INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID] WHERE ids.ENUM_H = 'TDischarge'; 
9

  • PostgreSQL, Oracle के साथ ' बदलें: "
  • MySQL `
  • एसक्यूएल सर्वर: [ और ]

उदाहरण के लिए: "OV2 BAS", bas."Ref ID" = ids."Ref ID", आदि

+0

+1 टाइलनेम और कॉलम नाम को सीमित करने के रूप में +1 निश्चित रूप से गलत लगता है। हालांकि मैं प्रश्न में इस्तेमाल किए गए डिलीमीटर के आधार पर उद्धरणों के बजाए बैकटिक्स का अनुमान लगा रहा हूं। –

1

यह आपके द्वारा उपयोग किए जा रहे डेटाबेस इंजन पर निर्भर करता है। आप जो DBMS उपयोग कर रहे हैं निर्दिष्ट नहीं करते [ ]

SELECT * FROM [OV2 BAS] AS bas 
INNER JOIN [OV2 RefID] AS ids ON bas.[Ref ID] = ids.[Ref ID] 
WHERE ids.ENUM_H = 'TDischarge'; 
+0

यह एमएस एक्सेस 2007 (माइक्रोसॉफ्ट.एसीई.ओएलडीबी.12.0) के साथ किए गए डेटाबेस तक पहुंचने के लिए है। –

1

, लेकिन मैं एसक्यूएल सर्वर अनुमान लगा रही है, इसलिए

SELECT * 
FROM [OV2 BAS] AS bas 
    ^^^^^^^^^ 
:
एसक्यूएल सर्वर के लिए, आप कोष्ठक में फ़ील्ड नाम डाल करने के लिए है

... ब्रैकेट में फ़ील्ड नाम संलग्न करें। आपके जैसे कोट्स का उपयोग करके, फ़ील्ड नाम को एक सादा स्ट्रिंग में बदल देता है, जिसे SQL सर्वर द्वारा फ़ील्डनाम के रूप में नहीं माना जाएगा।

+0

यह एमएस एक्सेस 2007 (माइक्रोसॉफ्ट.एसीई.ओएलडीबी.12.0) के साथ किए गए डेटाबेस तक पहुंचने के लिए है। –

+0

ठीक है। ब्रैकेट भी वहां काम करेंगे। अपने खेतों का नाम बदलने पर विचार करें ताकि उनमें कोई जगह न हो, यदि आप कर सकते हैं - दूरी वाले नाम सड़क से दर्द का कारण बनेंगे (जैसा कि आप अभी ढूंढ रहे हैं)। –

+0

आपको जॉइन क्लॉज पर फ़ील्ड नामों को भी अनदेखा करना होगा - उद्धरण फ़ील्ड नाम उन्हें स्ट्रिंग में बदल देते हैं, और उन्हें फील्ड नाम के रूप में नहीं माना जाएगा। '... आधार पर। [रेफरी आईडी] = आईडी। [रेफरी आईडी]' –

0

माइक्रोसॉफ्ट एक्सेस के लिए, फ़ील्ड नाम कि रिक्तियाँ लपेट पीठ के साथ जैसे टिक्स तालिका

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