আপনি স্ট্রিংকে কীভাবে তুলনা করবেন যাতে তুলনাটি সত্য হয় যদি প্রতিটি স্ট্রিংয়ের ক্ষেত্রে একই পরিমাণ থাকে। উদাহরণ স্বরূপ:
Select * from a_table where attribute = 'k'
... 'কে' এর একটি বৈশিষ্ট্য সহ একটি সারিতে ফিরে আসবে। আমি এই আচরণ চাই না।
আপনি স্ট্রিংকে কীভাবে তুলনা করবেন যাতে তুলনাটি সত্য হয় যদি প্রতিটি স্ট্রিংয়ের ক্ষেত্রে একই পরিমাণ থাকে। উদাহরণ স্বরূপ:
Select * from a_table where attribute = 'k'
... 'কে' এর একটি বৈশিষ্ট্য সহ একটি সারিতে ফিরে আসবে। আমি এই আচরণ চাই না।
উত্তর:
Select * from a_table where attribute = 'k' COLLATE Latin1_General_CS_AS
কৌতুকটি করেছেন।
Latin1_General_CS_AS
একটি স্পেসিফিকেশন। কোলেশন বলতে নিয়মের একটি সেট বোঝায় যা ডেটা সাজানো এবং তুলনা করা হয় তা নির্ধারণ করে। আরও তথ্যের জন্য এই পৃষ্ঠাটি দেখুন ।
আপনি এই সিনট্যাক্সটি ব্যবহার করে সেই বৈশিষ্ট্যটিকে কেস সংবেদনশীল হিসাবে রূপান্তর করতে পারেন :
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CS_AS
এখন আপনার অনুসন্ধান কেস সংবেদনশীল হবে ।
আপনি যদি সেই কলামের কেসটি আবার সংবেদনশীল করতে চান তবে ব্যবহার করুন
ALTER TABLE Table1
ALTER COLUMN Column1 VARCHAR(200)
COLLATE SQL_Latin1_General_CP1_CI_AS
আপনি কলামগুলি সহজেই ভারবিনারি (সর্বোচ্চ দৈর্ঘ্য) এ রূপান্তর করতে পারেন, ত্রুটিপূর্ণ তুলনা এড়াতে আপনি যে দৈর্ঘ্যটি প্রত্যাশা করেছেন তা অবশ্যই সর্বাধিক হওয়া উচিত, এটি কলামের দৈর্ঘ্য হিসাবে দৈর্ঘ্য নির্ধারণ করার জন্য যথেষ্ট। আপনার টেবিল কলামগুলিতে স্থানটির অর্থ এবং মূল্য রয়েছে ব্যতীত ট্রিম কলাম আপনাকে আসল মানের তুলনা করতে সহায়তা করে, এটি একটি সাধারণ নমুনা এবং আপনি দেখতে পাচ্ছেন যে আমি কলামগুলির মানটি ট্রিম করে তারপরে রূপান্তর এবং তুলনা করতে পারেন:
CONVERT(VARBINARY(250),LTRIM(RTRIM(Column1))) = CONVERT(VARBINARY(250),LTRIM(RTRIM(Column2)))
এই সাহায্য আশা করি।
ঠিক অন্য বিকল্প হিসাবে আপনি HASHBYTES ব্যবহার করতে পারেন, এরকম কিছু:
SELECT *
FROM a_table
WHERE HASHBYTES('sha1', attribute) = HASHBYTES('sha1', 'k')