शुरुआत के लिए, आप चाहते हैं कि आपके सभी कॉलम nvarchar
. हों . यह आपकी भंडारण समस्याओं का ख्याल रखेगा। जहां तक छँटाई और छानने की बात है, तो आपके कहने पर कोलाजेशन महत्वपूर्ण हो जाते हैं।
आप डेटा के साथ क्या कर रहे हैं और फ़िल्टरिंग और सॉर्टिंग के लिए आपको कितने कॉलम का उपयोग करने की आवश्यकता है और आप संचालन कैसे कर रहे हैं, इसके आधार पर, इसे करने का एक तरीका गतिशील एसक्यूएल के साथ है। आप कुछ ऐसा कर सकते हैं
declare @collation sysname = 'Latin1_General_CI_AS'
declare @cmd nvarchar(max)
set @cmd = 'select * from person order by last_name collate ' + @collation
exec sp_executesql @cmd
यह एक अच्छा समाधान नहीं है, लेकिन यह काम करता है। आप किसी भी फ़ील्ड के बाद कोलेशन को एक दृश्य में फेंक सकते हैं, इसलिए जैसा कि आपने उल्लेख किया है, यह एक विकल्प है। कुछ इस तरह, और फिर आप कॉलेशन निर्दिष्ट किए बिना इसे क्वेरी कर सकते हैं।
create view v_Person_RU as
select first_name collate Cyrillic_General_CI_AI, last_name collate Cyrillic_General_CI_AI...
create view v_Person_AR as
select first_name collate Arabic_CI_AI, last_name collate Arabic_CI_AI...
तब आप क्वेरी के लिए उपयोग करने के लिए केवल सही दृश्य चुनें का उपयोग कर सकते हैं।