2010-09-29 15 views
6

SQL करने के लिए जब मैं चलाने की कोशिश करें ...क्वैरी

SELECT * FROM Users WHERE Username = 'ae' यह मैचों रिटर्न जहां उपयोगकर्ता नाम æ (राख चरित्र) है एसक्यूएल सर्वर/LINQ में æ मेल खाता है।

मैं सोच रहा था कि राख चरित्र जैसे पात्रों का समर्थन करने का कोई तरीका है या नहीं, लेकिन सटीक मिलान जो मैं ढूंढ रहा हूं उसके लिए मिलता है।

मैं ae के लिए खोज और बस प्राप्त करना चाहते हैं ae, ae नहीं और æ

मैं एसक्यूएल सर्वर 2008 और SQL सर्वर 2008 R2 उपयोग कर रहा हूँ।

+0

शायद मैं नहीं मिल रहा है क्या आप के बाद कर रहे हैं के साथ होने की नहीं लगती। क्या आप 'ए' के ​​उदाहरणों को दो अक्षर 'ए' और एकल वर्ण 'æ' माना जाना चाहते थे? –

+0

@ p.campbell जब मैं एई खोजता हूं तो मैं सिर्फ शाब्दिक एई चाहता हूं और यह मेल नहीं खाता है æ –

उत्तर

2

यह एसक्यूएल collations

;with Users As 
(
select 'æ' as Username UNION ALL SELECT 'ae' 
) 
SELECT * 
FROM Users WHERE Username = 'ae' collate SQL_Latin1_General_CP1_CI_AS 
+0

जब मैं आपके उदाहरण को पुन: उत्पन्न करने में सक्षम था, लेकिन मेरे आवेदन में इसका उपयोग नहीं किया, तो मैंने चारों ओर खेलना शुरू कर दिया। यदि आप अपने तारों को 'एन' के साथ उपसर्ग करते हैं, तो कोड टूट जाएगा। तो जाहिर है कि 'वचरार' बनाम 'एनवीएआरएआरएआर' के साथ भी इसका कुछ संबंध है। क्या कोई इसे समझा सकता है (या संसाधन को इंगित करता है)? – Brad

0

आप अपनी तुलना के लिए एक ordinal collation का उपयोग कर सकते हैं। उदाहरण के लिए:

SELECT * 
FROM Users 
WHERE Username = 'ae' COLLATE Latin1_General_BIN 
+0

यह क्वेरी केस-संवेदी बनाता है, क्या वैसे भी दोनों हैं? –