2010-04-15 12 views
27

मुझे समस्या है, कि एमएसएसएलएल सर्वर 2000 को किसी तालिका से कुछ विशिष्ट मानों का चयन करना चाहिए (विशिष्ट कॉलम nvarchar प्रकार का है)। कभी कभी एक ही मान रहे हैं, लेकिन अलग अलग मामलों, उदाहरण के लिए (स्यूडोकोड) के साथ:"चयन डिस्टिंट" विभिन्न मामलों को अनदेखा करता है

SELECT DISTINCT * FROM ("A", "a", "b", "B") 

A,b 

वापसी होगी लेकिन मैं चाहते हैं (और उम्मीद करते हैं)

A,a,b,B 

क्योंकि वे वास्तव में अलग-अलग मान हैं।

इस समस्या को हल करने के लिए कैसे करें?

+2

कॉलम के लिए आप किस संयोजन का उपयोग करते हैं? –

उत्तर

47

संयोजन को असंवेदनशील स्थिति में सेट किया जाएगा।

आप इस

Select distinct col1 COLLATE sql_latin1_general_cp1_cs_as 
From dbo.myTable 
+0

मुझे कॉललेट नहीं पता था, लेकिन यह समाधान है। जैसे ही मुझे अनुमति है (6 मिनट शेष) मैं इसे स्वीकार करूंगा। धन्यवाद! – powerbar

+4

परिणामस्वरूप कॉलम नाम खोने से बचने के लिए 'col1 के रूप में' को जोड़ना न भूलें! – MKorsch

+0

'लैटिन 1_general_ci' अधिकांश लैटिन वर्णों के लिए काम करता है, लेकिन' utf8mb4_unicode_ci', जैसा कि ['शो collation'] द्वारा दिखाया गया है (https://dev.mysql.com/doc/refman/5.7/en/show-collation.html) चाहिए सब कुछ के लिए काम करते हैं। –

1
SELECT DISTINCT 
    CasedTheColumn 
FROM 
    (
    SELECT TheColumn COLLATE LATIN1_GENERAL_BIN AS CasedTheColumn 
    FROM myTAble 
    )FOO 
WHERE 
    CasedTheColumn IN ('A', 'a'...) 
0

maby की तरह कुछ करने की जरूरत है इस में मदद मिलेगी: http://msdn.microsoft.com/en-us/library/ms187582.aspx

+2

एक लिंक में गिरना एक जवाब नहीं है। यह बताते हुए कि जानकारी का उपयोग कैसे करें और यह इस मुद्दे से कैसे संबंधित है। –

0

कुछ बाइनरी में सवाल में स्तंभ के collation सेट करने का प्रयास करता है, उदा utf8-bin। आप या तो in the SELECT statement itself या अपनी तालिका संरचना को सीधे बदलकर कर सकते हैं (जिसका अर्थ यह है कि प्रत्येक बार जब क्वेरी चलती है तो उसे कॉलेशन को मैप करना नहीं पड़ता है, क्योंकि यह इसे आंतरिक रूप से सही तरीके से स्टोर करेगा)।

4

इस ऑपरेशन के लिए बिनरी का उपयोग करें। स्तंभ कास्ट तो जैसे बाइनरी:

SELECT DISTINCT BINARY(column1) from table1; 

बस अपने स्कीमा के अनुसार column1 और table1 बदल जाते हैं।

पूर्ण उदाहरण है कि MySQL 5.7 में मेरे लिए काम करता है, दूसरों के लिए काम करना चाहिए:

SELECT DISTINCT BINARY(gateway) from transactions; 

चीयर्स!

+0

अधिक क्लीनर विकल्प! – brianlmerritt

+0

यह इतना बेहतर है। मैं हर तालिका के संयोजन को बदलना नहीं चाहता जिसमें मुझे इस तरह की खोज करना है। – carla

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