2009-06-02 7 views
6

यह प्रश्न मेरे last question के समान है। इस समय के अलावा मैं 6 अंकों के पूर्णांक के बजाय अक्षरों का उपयोग कर रहा हूं। मैं अनुक्रम "अक्षरों" से बाहर निकलना चाहता हूं।टीएसक्यूएल का उपयोग करके, क्या मैं एक बार (1) कॉलम बढ़ा सकता हूं और बिना किसी केस स्टेटमेंट के बाएं आउटर जॉइन में इसका उपयोग कर सकता हूं?

चलो कहते हैं कि मैं निम्नलिखित डेटा करते हैं: पंक्ति 05 और 06 के बीच में

id | Date | Letter 
----------------------------- 
01 | 5/1/2009 | X 
02 | 5/1/2009 | Y 
03 | 5/1/2009 | Z 
04 | 5/1/2009 | A 
05 | 5/1/2009 | B 
06 | 5/1/2009 | D 

मैं एक प्रश्न है कि मुझे बताओ होगा साथ आने के लिए सक्षम होने के लिए चाहते हैं वहाँ 'सी' के साथ एक पंक्ति होना चाहिए

मेरे अंतिम प्रश्न (आईएनटी का उपयोग करके) में मुझे निम्नलिखित समाधान के समान कुछ दिया गया था, और यह बहुत अच्छा काम करता था।

SELECT * from TABLE1 t1 
LEFT OUTER JOIN TABLE2 t2 ON t2.INTCol - 1 = t2.INTCol AND t1.date = t2.date 
WHERE t2.id IS NULL 

ठीक है, अक्षरों के साथ (जहां तक ​​मुझे पता है) मैं नहीं कह सकता (जी -1)। तो, क्या मैं ऐसा कर सकता हूं?

मैं जिस डेटाबेस का उपयोग कर रहा हूं वह SQL Server 2005 है। मेरा मानना ​​है कि पीएल/एसक्यूएल में ट्रान्सलेट का उपयोग करने में एक आसान समाधान है, लेकिन मुझे कोई बात नहीं है कि मैं टीएसक्यूएल का उपयोग करने जैसी कुछ भी कर सकता हूं।

उत्तर

11

आप

का उपयोग कर अपने ascii संख्या के लिए चार (1) में बदल सकते हैं
ASCII(Letter) 

फिर आप इस एक के बाद बढ़ा देते हैं और यह CHAR (यदि आवश्यक हो) का उपयोग करते हुए एक पत्र पर लौट सकते हैं, तो आपके कोड इस होगा:

SELECT * from TABLE1 t1 
LEFT OUTER JOIN TABLE2 t2 
     ON ASCII(t1.INTCol) - 1 = ASCII(t2.INTCol) 
     AND t1.date = t2.date 
WHERE t2.id IS NULL 
+0

टाइपो, आपको ASCII (t2.INTCol) दो बार मिला है ... – RBarryYoung

+0

@RBarryYoung - निश्चित ... – cjk

4

आप अपने ASCII मूल्य के लिए एक चरित्र कन्वर्ट करने के लिए ASCII() फ़ंक्शन का उपयोग कर सकते हैं:

ASCII (पत्र)

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

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