অ্যাকসেন্ট সংবেদনশীল কোলেশন ব্যবহার করে এই সমস্যা সমাধান করা যেতে পারে ।
আপনার ডাটাবেস সম্ভবত একটি এএস (অ্যাকসেন্ট সংবেদনশীল) কোলেশন ব্যবহার করছে তাই ডিফল্টরূপে এটি অ্যাকসেন্ট সহ সঠিক মিলের জন্য অনুসন্ধান করবে।
আপনি তুলনা সহ একটি কোলেশন নির্দিষ্ট করে ডাটাবেস ডিফল্টের তুলনায় অন্য কোলেশন ব্যবহার করার জন্য WHERE ধারাটি নির্দেশ করতে পারেন।
ইন এই dbfiddle আমি একটি উদাহরণ latin1 collations ব্যবহার করে তৈরি করা কিন্তু আপনি কোলেশন আপনি শুধু কোলেশন আপনার কলাম বর্তমানে ব্যবহার হয় মধ্যে এআই আঃ পরিবর্তন করে ব্যবহার করছেন সঙ্গে একই পদ্ধতির ব্যবহার করতে পারে।
কলম্বান ব্যবহার করছে এমন জোটের সাথে মিলছে অ্যাকসেন্ট সংবেদনশীল কোলেশন Use উদাহরণস্বরূপ, যদি কলামটি ব্যবহার করছে SQL_Latin1_General_CP1_CI_AS
, ব্যবহার করছে SQL_Latin1_General_CP1_CI_AI
এবং না Latin1_General_CI_AS
বা Latin1_General_100_CI_AS
এই দুটির কোনও প্রকরণের যেহেতু অ-এসকিউএল_ কোলিশেশনগুলির আচরণ কেবল উচ্চারণ-সংবেদনশীলতার চেয়ে আরও বিভিন্নভাবে পৃথক হবে, এবং এটি ব্যবহারকারীদের দ্বারা প্রত্যাশিত নাও হতে পারে।
আপনি বর্তমান কোলেশন ইন পরীক্ষা করতে পারেন sys.columns
।
CREATE TABLE testaccent (name nvarchar(50));
GO
INSERT INTO testaccent (name) VALUES ('Millière') , ('Milliere');
GO
-- returns Miliere
SELECT * FROM testaccent WHERE name = 'Milliere';
-- returns both
SELECT * FROM testaccent WHERE name='Milliere' COLLATE Latin1_General_CI_AI
--only returns Miliere
SELECT * FROM testaccent WHERE name='Milliere' COLLATE Latin1_General_CI_AS
আরও তথ্যের জন্য এসকিউএল সার্ভার কলেশন ব্যবহার করে পড়ুন ।
তারপরে আবার আপনি সম্ভবত "e" "e" দিয়ে বাছাই করে তা নিশ্চিত করার জন্য এই জোটটি ব্যবহার করতে বাছাই করতে চান ( মন্তব্যে peufeu উল্লেখ করেছেন)) অন্যথায়, যে ব্যক্তি বর্ণানুক্রমিক ক্রমে ফলাফলের মাধ্যমে প্যাগিনেট করে সে "é" না পেয়ে তারা যেখানে তাদের প্রত্যাশা করে তা অবাক করে দেবে, তবে আপনি যদি কেবল এই প্রশ্নটি স্পর্শ করতে চান তবে আপনিও এই COLLATE
ধারাটি যুক্ত করতে পারেন ORDER BY
।
মন্তব্যগুলিতে সলোমন রুটজির দ্বারা উল্লিখিত হিসাবে , এটি যদি কেবল 1 বা কয়েকটি কলামগুলিকেই প্রভাবিত করে, অন্য বিকল্পটি হ'ল একটি অ-অবিচলিত গণিত কলাম তৈরি করা যা কেবল "নাম" কলামটি পুনরাবৃত্তি করে এবং উচ্চারণ সংবেদনশীল জোট সরবরাহ করে এবং তারপরে গণনাটিকে সূচক করে কলাম। এটি ক্যোয়ারীর মধ্যে কোলেশন পরিবর্তন করে স্ক্যান এড়িয়ে চলে। তারপরে কোয়েরিতে নতুন কলামে ফিল্টার করা দরকার।
কিছুটা এইরকম:
ALTER TABLE
dbo.[table_name] ADD [SearchName] datatype_of_name_column
AS ([Name] COLLATE LATIN1_GENERAL_100_CI_AI));
CREATE INDEX [IX_table_name_SearchName]
ON dbo.[table_name] ([SearchName] ASC);
অথবা আপনি গণিত কলাম যুক্ত করার পরিবর্তে একটি দৃশ্য তৈরি করতে পারেন ( জয়াও পছন্দ হিসাবে )।