এসকিউএল- একটি স্ট্রিং অনুসন্ধানের সময় কেস উপেক্ষা করুন


130


এসকিউএল-এ আমার একটি সারণী
প্রাইসঅর্ডারশিপড
প্রাইস
অর্ডারশিপড ইনবাউন্ড প্রাইসআর্ডারশিপডআউটবাউন্ডে নিম্নলিখিত তথ্য রয়েছে

আমাকে একটি সারণীতে একটি স্ট্রিং অনুসন্ধান করে এমন একটি কোয়েরি লিখতে হবে। একটি স্ট্রিং অনুসন্ধান করার সময় এটি কেস উপেক্ষা করবে। নীচে উল্লিখিত এসকিউএল কোয়েরির জন্য

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%PriceOrder%' 

উপরের সমস্ত ডেটা দেয়, যদিও

SELECT DISTINCT COL_NAME FROM myTable WHERE COL_NAME LIKE '%Priceorder%' 

দেয় না

যেমন। যখন আমি 'প্রাইস অর্ডার' বা 'প্রাইস অর্ডার' অনুসন্ধান করি তবে এটি কার্যকর হয় তবে 'প্রাইসর্ডার' বা 'প্রাইসর্ডার' কাজ করে না। আমি নীচে কোয়েরিটি দিয়ে কল ব্যবহার করে চেষ্টা করেছি, তবে এটি কার্যকর হচ্ছে না। আমাকে কোথায় ভুল হচ্ছে তা আমাকে জানান।

SELECT DISTINCT COL_NAME FROM myTable WHERE 
COL_NAME COLLATE latin1_general_cs LIKE '%Priceorder%'

উত্তর:


232

এর মতো কিছু ব্যবহার করুন -

SELECT DISTINCT COL_NAME FROM myTable WHERE UPPER(COL_NAME) LIKE UPPER('%PriceOrder%')

অথবা

SELECT DISTINCT COL_NAME FROM myTable WHERE LOWER(COL_NAME) LIKE LOWER('%PriceOrder%')

14
আমি মনে করি আপনার সর্বদা সেরা অনুশীলন হিসাবে স্ট্রিং মূলধন (UPPER) তুলনা করা উচিত। গুগল "তুর্কি আমি"
ট্রুবেনফুচস

2
জানতে চান আপনার উত্তরটিতে কোনও কলাম মানকে UPPERবা LOWERকেসে রূপান্তর করে LIKEঅনুসন্ধানটি ব্যবহার করে কোনও পারফরম্যান্স সমস্যা আছে?
শাইজুট

প্রকৃতপক্ষে আপনাকে UPPER এবং LOWER উভয় রূপের তুলনা করতে হবে কারণ কিছু অক্ষরের উপরের ক্ষেত্রে পৃথক উপস্থাপনা থাকে তবে নিম্ন ক্ষেত্রে একই প্রতিনিধিত্ব থাকে। অন্যান্য চরিত্রগুলির জন্য, বিপরীতটি সত্য হতে পারে। জাভা জর্জিয়ান বর্ণমালাকে বিশেষভাবে তার ক্ষেত্রে-সংবেদনশীল তুলনায় অতিরিক্ত টায়ারলক্যাস () করার জন্য কারণ হিসাবে উল্লেখ করেছে।
ক্রশা কে। রুল

1
দুর্ভাগ্যক্রমে, এই পদ্ধতির ফলে এই পোস্টে বর্ণিত একটি পূর্ণ টেবিল স্ক্যান ঘটায়: alvinalexender.com/sql/… । ফিল্টারকৃত কলামটি UPPER / LOWER ফাংশন দ্বারা পরিবর্তিত হওয়ায় একটি সূচী অনুসন্ধান প্রয়োগ করা যাবে না।
জেফ এস

উপরের / নিম্নের সাথে ক্যোয়ারী পারফরম্যান্স পর্যাপ্ত না হলে কোলেশন সেট করা (সূচক তৈরির আগে) আরও ভাল পদ্ধতির বলে মনে হচ্ছে।
জেফ এস

10

অনুরূপ সংবেদনশীলতা সহ অনুসন্ধানের অনুরূপ এই প্রশ্নটি দেখুন এবং উত্তর দিন - এসকিউএল সার্ভারটি যেখানে অভিব্যক্তি হিসাবে কেসটিকে উপেক্ষা করে

এর মতো কিছু ব্যবহার করার চেষ্টা করুন:

SELECT DISTINCT COL_NAME 
FROM myTable 
WHERE COL_NAME COLLATE SQL_Latin1_General_CP1_CI_AS LIKE '%priceorder%'

এটি কাজ করে না আমি এসকিউএল কোয়েরিটি
কোলেটের

@ মিগুয়েল-এফ .. এটি ঠিকঠাক কাজ করছে তবে আমার টেবিল থেকে কোথাও সিলেক্ট ডিসট্রিক্ট সিওলির থেকে এটি কীভাবে আলাদা হবে যেখানে কোলকুলি '% প্রাইসর্ডার%' পছন্দ করেছেন কারণ এটি আমার পক্ষেও ঠিক কাজ করছে ..
জিশান্ট

আমি এর পরিবর্তে 'এসকিউএল_ল্যাটিন 1_ জেনারাল_সিপি 1_সিআই_এএস_কিআইডাব্লুআই' ব্যবহার করার পরামর্শ দেব। এটি কোনও সিচের ক্ষেত্রে সংবেদনশীল নয়।
ব্যবহারকারী 8155123


4

আপনার সম্ভবত SQL_Latin1_General_Cp1_CI_AS_KI_WIআপনার মিলন হিসাবে ব্যবহার করা উচিত । আপনার প্রশ্নে আপনি যেটিকে নির্দিষ্ট করেছেন তা স্পষ্টভাবে কেস সংবেদনশীল।

আপনি এখানে কোলেশনগুলির একটি তালিকা দেখতে পারেন ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.