2015-03-20 9 views
5

मुझे पता है कि यह देर हो चुकी है, लेकिन यहां क्या चल रहा है? मैं कोई परिणाम उम्मीद थी के रूप में अर्धविराम ASCII में 9 के बाद आता है:एसक्यूएल सर्वर स्ट्रिंग तुलना

select ascii(';') as semicolon, ascii('9') as nine where ';' < '9' 

परिणाम:

semicolon nine 
59   57 

उत्तर

6

छंटाई और SQL सर्वर में चरित्र डेटा की तुलना केवल बाइनरी collations के साथ कोड अंक से निर्धारित होता है।

select ascii(';') as semicolon, ascii('9') as nine where ';' COLLATE Latin1_General_BIN < '9' COLLATE Latin1_General_BIN; 
अन्य collations, तुलना नियमों की सहायता से

और सॉर्ट क्रम आदेश (alphas से पहले विशेष वर्ण) अंतर्निहित बाइनरी कोड बिंदु अनुक्रम की परवाह किए बिना शब्दकोश है। इसके अलावा, विंडोज कॉलेशन भाषाई "शब्द सॉर्ट" नियमों का भी पालन करता है। उदाहरण के लिए:

SELECT 1 WHERE 'coop' COLLATE SQL_Latin1_General_CP1_CI_AS < 'co-op' COLLATE SQL_Latin1_General_CP1_CI_AS; 
SELECT 1 WHERE 'coop' COLLATE Latin1_General_CI_AS < 'co-op' COLLATE Latin1_General_CI_AS; 
+0

धन्यवाद दान, मुझे पता था कि यह इस तरह कुछ गूढ़ होगा। यदि आप मुझसे पूछें तो खूनी भ्रमित और obfuscating! –

+0

@ जोनहैनलॉन, हाँ यह भ्रमित है। अच्छी बात यह है कि आपने भाषा और कोड पृष्ठों के बारे में भी नहीं पूछा :-) –

2

आईएसओ तारों पर < ऑपरेटर का उपयोग करते समय तुलना lexicographical क्रम का उपयोग किया जाता है (यानी आदेश यदि आप एक शब्दकोश में मिल जाएगा।)

http://en.wikipedia.org/wiki/Lexicographical_order

आप वें में ASCII() फ़ंक्शन का उपयोग करने की आवश्यकता होगी आपके मामले के सत्य होने के लिए ई WHERE खंड।

SELECT ASCII(';') AS semicolon, 
     ASCII('9') AS nine 
WHERE ASCII(';') < ASCII('9') 

http://sqlfiddle.com/#!6/9eecb/1264

+0

ascii() केवल यह दिखाने के लिए था कि अर्धविराम वास्तव में 9 से अधिक है। मैं सिर्फ यह जानना चाहता हूं कि ';' <9 'सत्य का मूल्यांकन करता है। –

+0

हां, लेकिन स्ट्रिंग तुलनात्मक उपज अलग-अलग परिणाम क्यों करते हैं? –

+0

आईएसओ स्ट्रिंग्स पर '<' ऑपरेटर का उपयोग करते समय, तुलना लेक्सिकोोग्राफिक ऑर्डर (यानी आपको एक शब्दकोश में मिले ऑर्डर का उपयोग करके किया जाता है।) मैंने इस जानकारी को शामिल करने के लिए अपना उत्तर अपडेट किया। http://en.wikipedia.org/wiki/Lexicographical_order – Drenmi

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