2009-04-30 16 views
20

मैं एमएस एक्सेस क्वेरी के भीतर ऐसा कुछ करना चाहता हूं, लेकिन सबस्ट्रिंग एक अपरिभाषित कार्य है।क्या एमएस एक्सेस एसक्यूएल में सबस्ट्रिंग फ़ंक्शन के बराबर है?

SELECT DISTINCT SUBSTRING(LastName, 1, 1) 
FROM Authors; 

उत्तर

27

आप के रूप @onedaywhen टिप्पणी में बताते हैं VBA स्ट्रिंग कार्यों का उपयोग कर सकते हैं (, वे वास्तव में VBA कार्यों नहीं हैं, लेकिन एमएस जेट पुस्तकालयों से उनके समकक्ष। जहां तक ​​समारोह हस्ताक्षर जाना, वे कर रहे हैं कहा जाता है और काम एक ही है, भले ही एमएस एक्सेस की वास्तविक उपस्थिति उन्हें उपलब्ध होने की आवश्यकता नहीं है):।

SELECT DISTINCT Left(LastName, 1) 
FROM Authors; 

SELECT DISTINCT Mid(LastName, 1, 1) 
FROM Authors; 
+3

नकचढ़े बिंदु: DLLs शामिल हैं (मैं belive) Expsrv.dll और vbajet32। डीएलएल, जो एमएस दस्तावेज सामूहिक रूप से जेट अभिव्यक्ति सेवाओं के रूप में संदर्भित करता है। तो मुझे लगता है कि हम उन्हें संदर्भ में 'वीबीए फ़ंक्शंस' के बजाय मूल एसीई/जेट अभिव्यक्ति के रूप में मान सकते हैं। ध्यान दें कि कुछ अभिव्यक्ति एसीई/जेट में उनके समकक्ष वीबीए कार्यों की तुलना में अलग-अलग काम करती हैं उदा। आईआईएफ(): वीबीए हमेशा सत्य और झूठे खंड दोनों का मूल्यांकन करता है, जबकि एसीई/जेट नहीं करता है। – onedaywhen

+0

@onedaywhen: स्पष्टीकरण के लिए धन्यवाद। मैं "वीबीए फ़ंक्शंस" लिखने में संकोच करता था, लेकिन मुझे नहीं पता था कि इसके बजाय क्या लिखना है। वर्णित स्ट्रिंग फ़ंक्शंस के मामले में वे स्पष्ट रूप से समकक्ष हैं। ओटीओएच - मुझे लगता है कि आप एक एक्सेस क्वेरी में उपयोगकर्ता द्वारा परिभाषित वीबीए फ़ंक्शंस का भी उपयोग कर सकते हैं, लेकिन यह एक्सेस विशिष्ट हो सकता है। – Tomalak

+2

मुझे लगता है कि यही कारण है कि Nz() मूल पहुंच में उपलब्ध है, लेकिन जब आप Excel से क्वेरी चलाते हैं। – Knox

6

मुझे लगता है कि वहाँ है मध्य() और शायद वाम() और RIGHT() पहुंच में

+0

मैं इन्हें एलईएन के साथ उपयोग करता हूं और स्ट्रिंग मानों से मुझे जो कुछ चाहिए उसे प्राप्त करें। – Bratch

2

मैं एक ऑफ-द-शेल्फ मॉड्यूल है कि इस समारोह जोड़ा नहीं पा सके, तो मैं एक ने लिखा है:

पहुँच में, मैक्रो क्षेत्र में विजुअल बेसिक में क्लिक करें, डेटाबेस उपकरण रिबन पर जाएँ। ऊपरी बाएं प्रोजेक्ट क्षेत्र में, अपनी फ़ाइल के नाम पर राइट क्लिक करें और सम्मिलित करें -> मॉड्यूल का चयन करें। मॉड्यूल में इस पेस्ट:

Public Function Substring_Index(strWord As String, strDelim As String, intCount As Integer) As String 

Substring_Index = delims 

start = 0 
test = "" 

For i = 1 To intCount 
    oldstart = start + 1 
    start = InStr(oldstart, strWord, strDelim) 
    Substring_Index = Mid(strWord, oldstart, start - oldstart) 
Next i 

End Function 

module1 के रूप में मॉड्यूल (डिफ़ॉल्ट) की बचत करें। अब आप कथन का उपयोग कर सकते हैं जैसे:

SELECT Substring_Index([fieldname],",",2) FROM table 
3

मैंने msaccess vba के साथ बहुत काम किया है। मुझे लगता है कि आप मध्य समारोह

उदाहरण के लिए देख रहे हैं

dim myReturn as string 
    myreturn = mid("bonjour tout le monde",9,4) 

तुम वापस मूल्य दे देंगे "टाउट"

+1

स्टैक ओवरव्लो में आपका स्वागत है! आपका उत्तर सही है, लेकिन शायद इसे कोई वोट नहीं मिलेगा क्योंकि यह किसी भी नई जानकारी प्रदान नहीं करता है जो स्वीकार्य उत्तर में पहले से नहीं है। – CoderDennis

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