উত্তর:
আপনি COLLATE NOCASEআপনার SELECTক্যোয়ারিতে ব্যবহার করতে পারেন :
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
Additionaly, SQLite, আপনি ইঙ্গিত করতে পারে একটি কলাম ক্ষেত্রে অসংবেদী যখন আপনি নির্দিষ্ট করে সারণি তৈরি হওয়া উচিত collate nocaseকলাম সংজ্ঞা (অন্যান্য অপশন আছে binary(ডিফল্ট) এবং rtrimদেখ এখানে )। আপনি collate nocaseযখন একটি সূচিও তৈরি করেন তখন আপনি নির্দিষ্ট করতে পারেন। উদাহরণ স্বরূপ:
টেবিল পরীক্ষা তৈরি করুন
(
পাঠ্য_মূল্য পাঠ্য কোলেটের নোকাস
);
পরীক্ষার মানগুলিতে প্রবেশ করান ('এ');
পরীক্ষার মানগুলিতে প্রবেশ করান ('বি');
পরীক্ষার মানগুলিতে প্রবেশ করান ('সি');
সূচী পরীক্ষা তৈরি করুন_পেক্স_ভ্যালু_আইডেক্স
পরীক্ষায় (টেক্সট_ভ্যালু কোলেটের নোকাস);
জড়িত এক্সপ্রেশনগুলি Test.Text_Valueএখন সংবেদনশীল হওয়া উচিত। উদাহরণ স্বরূপ:
sqlite> টেস্ট থেকে পাঠ্য_ভ্যালু নির্বাচন করুন যেখানে পাঠ্য_ভ্যালু = 'বি'; Text_Value ---------------- খ sqlite> পাঠ্য_ভ্যালু দ্বারা পরীক্ষার ক্রম থেকে পাঠ্য_ভ্যালু নির্বাচন করুন; Text_Value ---------------- একজন খ সি sqlite> Text_Value desc এর মাধ্যমে টেস্ট অর্ডার থেকে Text_Value নির্বাচন করুন; Text_Value ---------------- সি খ একজন
অপটিমাইজারটি কলামে সংবেদনশীল অনুসন্ধান এবং কলামে মিলে যাওয়ার জন্য সূচকটি সম্ভাব্যরূপে ব্যবহার করতে পারে। আপনি এটি explainএসকিউএল কমান্ড ব্যবহার করে পরীক্ষা করতে পারেন , যেমন:
sqlite> টেস্ট থেকে Text_Value নির্বাচন করুন যেখানে Text_Value = 'বি'; অ্যাডার অপকোড পি 1 পি 2 পি 3 ---------------- -------------- ---------- ---------- --------------------------------- 0 গোটো 0 16 1 পূর্ণসংখ্যা 0 0 2 ওপেনআড 1 3 কী-ইনফো (1, নোকাস) 3 সেটনাম কলাম 1 2 4 স্ট্রিং 8 0 0 খ 5 ইসনুল -1 14 6 মেকেরেকর্ড 1 0 এ 7 মেমস্টোর 0 0 8 সরানো 1 14 9 মেমলোড 0 0 10 আইডেক্সজি 1 14 + 11 কলাম 1 0 12 কলব্যাক 1 0 13 পরবর্তী 1 9 14 বন্ধ 1 0 15 হলট 0 0 16 লেনদেন 0 0 17 যাচাই করুন 0 4 18 গোটো 0 1 19 নোপ 0 0
COLLATE NOCASEক্ষেত্রটিতে ইতিমধ্যে এই কোলেশনটি সংজ্ঞায়িত করা থাকলে সূচকে যুক্ত করার প্রয়োজন হয় না: " ডিফল্ট কল্টিং ক্রম হ'ল তৈরি টেবিল বিবৃতিতে সেই কলামটির জন্য
COLLATE NOCASEশুধুমাত্র ASCII পাঠ্য নিয়ে কাজ করবে। আপনার কলামের মানগুলিতে একবার "ফিনস" বা "ভয়েলি" হয়ে গেলে এটি "বাগদত্ত" বা "ভোইলা" এর সাথে মেলে না। আইসিইউ এক্সটেনশন সক্ষম করার পরে, LIKEকেস-সংবেদনশীল হয়ে যায় তাই 'FIANCÉ' LIKE 'fiancé'সত্য, তবে 'VOILA' LIKE 'voilà'এখনও মিথ্যা। এবং আইসিইউ + লাইকের সূচকটি ব্যবহার না করার ক্ষেত্রে একটি অপূর্ণতা রয়েছে, তাই এটি বড় টেবিলগুলিতে ধীর হতে পারে।
select * from tbl where firstname='john' and lastname='doe' COLLATE NOCASEএটি ক্ষেত্রে সংবেদনশীল হবে lastname। মামলার অবশ হতে firstname, এই লিখুন: select * from tbl where firstname='john' COLLATE NOCASE and lastname='doe'। এটি one এক কলামের সাথে সুনির্দিষ্ট, পুরো whereধারাটি নয়।
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
আপনি এটি এর মতো করতে পারেন:
SELECT * FROM ... WHERE name LIKE 'someone'
(এটা না সমাধান, কিন্তু কিছু ক্ষেত্রে খুব সুবিধাজনক)
" LIKE অপারেটর একটি প্যাটার্নের সাথে মিলের তুলনা করে। ডানদিকে অপরেন্ডে প্যাটার্ন রয়েছে, বাম হাতের অপারেণ্ডে প্যাটার্নের সাথে মিলের জন্য স্ট্রিং রয়েছে pattern স্ট্রিংয়ের অক্ষরসমূহ the প্যাটার্নের একটি আন্ডারস্কোর ("_") স্ট্রিংয়ের যে কোনও একক অক্ষরের সাথে মেলে । অন্য কোনও অক্ষর নিজেই বা তার ছোট / বড় অংশের সাথে সমান (যেমন কেস-সংবেদনশীল মিলে যায়) । মেলে g ASCII অক্ষরগুলির জন্য উচ্চ / নিম্নতর ক্ষেত্রে। LIKE অপারেটরটি ASCII ব্যাপ্তির বাইরে থাকা ইউনিকোড অক্ষরের ক্ষেত্রে সংবেদনশীল exampleমিথ্যা।)
এটি স্ক্লাইটের সাথে নির্দিষ্ট নয় তবে আপনি এটি করতে পারেন
SELECT * FROM ... WHERE UPPER(name) = UPPER('someone')
আরেকটি বিকল্প হ'ল আপনার নিজস্ব কাস্টম কলেজ তৈরি করা to এরপরে আপনি কলামটি কলামে সেট করতে পারেন বা এটি আপনার নির্বাচিত অনুচ্ছেদে যুক্ত করতে পারেন। এটি অর্ডার এবং তুলনা জন্য ব্যবহৃত হবে।
এটি 'VOILA' লাইক 'voilà' তৈরি করতে ব্যবহার করা যেতে পারে।
http://www.sqlite.org/capi3ref.html#sqlite3_create_collation
কোলিং ফাংশনটি অবশ্যই একটি পূর্ণসংখ্যা ফেরত পাঠাতে হবে যা negativeণাত্মক, শূন্য বা ধনাত্মক হয় যদি প্রথম স্ট্রিং যথাক্রমে দ্বিতীয়টির চেয়ে কম, সমান বা তার চেয়ে বড় হয়।
অন্য একটি বিকল্প যা আপনার ক্ষেত্রে বোধগম্য বা না বুঝতে পারে তা হ'ল আপনার বিদ্যমান কলামটির প্রাক-নিম্ন-সংক্ষিপ্ত মানগুলির সাথে একটি পৃথক কলাম থাকতে হবে। এটি এসকিউএলাইট ফাংশন ব্যবহার করে পপুলেটেড করা যায় LOWER()এবং তারপরে আপনি এই কলামটির পরিবর্তে ম্যাচটি সম্পাদন করতে পারেন।
স্পষ্টতই, এটি অপ্রয়োজনীয়তা এবং অসঙ্গতির সম্ভাবনার যোগ করে, তবে যদি আপনার ডেটা স্থির থাকে তবে এটি একটি উপযুক্ত বিকল্প হতে পারে।
সহজভাবে, আপনি আপনার নির্বাচন প্রশ্নে কলট নোকস ব্যবহার করতে পারেন:
SELECT * FROM ... WHERE name = 'someone' COLLATE NOCASE
যদি কলামটি প্রকারের হয় charতবে আপনার ফাঁকা জায়গাগুলির সাহায্যে অনুসন্ধান করা মানটি যুক্ত করতে হবে, দয়া করে এখানে এই প্রশ্নটি দেখুন । এটি ব্যবহারের পাশাপাশি COLLATE NOCASEবা অন্য সমাধানগুলির একটির (উপরের (), ইত্যাদি) যোগ করুন।
আপনি টেবিল ভেলগুলির সাথে সম্পর্কিত স্ট্রিংটির তুলনা করার জন্য এই জাতীয় কোয়েরিটি ব্যবহার করতে পারেন।
টেবিল_নাম থেকে কলামের নাম নির্বাচন করুন যেখানে কলামের নাম যেমন 'সম্পর্কিত তুলনা মান';
এটা আমার জন্য পুরোপুরি কাজ করে।
SELECT NAME FROM TABLE_NAME WHERE NAME = 'test Name' COLLATE NOCASE