2010-08-12 14 views
9

मैं एक वेब साइट खोज पर काम कर रहा हूं जो एसक्यूएल सर्वर 2008 एक्सप्रेस संस्करण का उपयोग करता है।diacritics युक्त क्षेत्रों पर एसक्यूएल खोज

मैं 'पुस्तकें' तालिका जो एक क्षेत्र नामित 'शीर्षक' जहां रोमानियाई (लैटिन) वर्णों से युक्त शीर्षक देखते हैं है है।

ठीक है, उपयोगकर्ता की तरह एक शब्द सम्मिलित करता है, तो: खोज फ़ील्ड में 'कासा' और मैं की तरह DB में एक शीर्षक है: 'परीक्षण Casa परीक्षण' मैं उस किताब को दिखाने के लिए चाहते हैं, लेकिन:

select * from books where title like '%casa%' 

इसे खोजने नहीं होगा ...

आप किसी भी समारोह जब चयन कर जो डायाक्रिटिक्स को हटा जानते हैं?

मुझे पता है कि मैं एसक्यूएल सर्वर के पूर्ण टेक्स्ट खोज ऐड-ऑन के साथ समस्या का समाधान कर सकता हूं लेकिन मैं इसे सरल तरीके से करना चाहता हूं।

उत्तर

15
select * from books where title COLLATE Latin1_General_CI_AI like '%casa%' 
बेशक

, आप एक मिलान कि तुम्हारा से मेल खाता है का चयन करना चाहिए ... बस अंत पर ऐ के रूप में बदलने के बनाने के लिए यह "लहजे असंवेदनशील"

जर्मन उमलॉट के साथ त्वरित उदाहरण

DECLARE @foo TABLE (bar varchar(100) /*implied COLLATE Latin1_General_CI_AS*/) 

INSERT @foo VALUES ('xxx fish yyy') 
INSERT @foo VALUES ('xxx bar yyy') 
INSERT @foo VALUES ('xxx bär yyy') 

select * from @foo where bar COLLATE Latin1_General_CI_AI like '%bar%' 
select * from @foo where bar like '%bar%' 
+0

मैं तुम्हें मेरा दिन बचाया लगता है ! –

+1

इसके अलावा, यदि आप हमेशा खोजों को असंवेदनशील होना चाहते हैं तो आप अपने डेटाबेस के लिए संयोजन बदल सकते हैं। –

+0

एक और सवाल: क्या आप जानते हैं कि यह linq में भी कैसे करें? आपका बहुत बहुत धन्यवाद! –

5

आपको एक उच्चारण असंवेदनशील कोलेट क्लॉज का उपयोग करने की आवश्यकता है।

0

आप LINQ में यह करने के लिए की जरूरत है, मुझे लगता है कि आप खोज स्ट्रिंग में पहले विशेषक दूर करने के लिए और फिर एक LINQ क्वेरी बनाने के लिए ... यह काम करना चाहिए ...

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