উত্তর:
সবকিছু ঠিক এএনএসআই মান অনুযায়ী:
এসকিউএল সার্ভার এএনএসআই / আইএসও এসকিউএল -২২ স্পেসিফিকেশন অনুসরণ করে (বিভাগ 8.2, সাধারণ নিয়ম # 3) কীভাবে ফাঁকা জায়গাগুলির সাথে স্ট্রিংগুলির তুলনা করতে হবে। এএনএসআই স্ট্যান্ডার্ডের তুলনাতে ব্যবহৃত অক্ষরের স্ট্রিংগুলির জন্য প্যাডিং প্রয়োজন যাতে তাদের তুলনা করার আগে তাদের দৈর্ঘ্য মিলে যায়। প্যাডিং সরাসরি ও যেখানে হ'ল শর্তের পূর্বাভাস এবং অন্যান্য লেনদেন-এসকিউএল স্ট্রিং তুলনাগুলির শব্দার্থতাতাকে প্রভাবিত করে। উদাহরণস্বরূপ, লেনদেন-এসকিউএল বেশিরভাগ তুলনামূলক ক্রিয়াকলাপের জন্য স্ট্রিংগুলিকে 'এবিসি' এবং 'অ্যাবসি' সমতুল্য বলে বিবেচনা করে।
এই নিয়মের একমাত্র ব্যতিক্রম লাইকের ভবিষ্যদ্বাণী is যখন লাইক প্রিডিকেট এক্সপ্রেশনটির ডান দিকটি একটি পিছনের স্থান সহ একটি মান দেয়, এসকিউএল সার্ভার তুলনা হওয়ার আগে দুটি মানকে একই দৈর্ঘ্যে প্যাড করে না। কারণ সংজ্ঞা অনুসারে লাইক প্রিডিটিকের উদ্দেশ্য হ'ল সাধারণ স্ট্রিং সমতা পরীক্ষার চেয়ে প্যাটার্ন অনুসন্ধানগুলি সহজতর করা, এটি পূর্বে উল্লিখিত এএনএসআই এসকিউএল -২২ স্পেসিফিকেশনের অংশটি লঙ্ঘন করে না।
এখানে উল্লিখিত সমস্ত মামলার একটি সুপরিচিত উদাহরণ:
DECLARE @a VARCHAR(10)
DECLARE @b varchar(10)
SET @a = '1'
SET @b = '1 ' --with trailing blank
SELECT 1
WHERE
@a = @b
AND @a NOT LIKE @b
AND @b LIKE @a
এখানে সম্পর্কে আরো কিছু বিস্তারিত এর trailing ঐ খালি এবং LIKE
দফা ।
কিন্তু আপনি যদি তাদের পার্থক্য চাই - আপনি ব্যবহার করতে সিদ্ধান্ত নিতে পারে DATALENGTH
পরিবর্তে ফাংশন LEN
, কারণ
SELECT 1 WHERE LEN('John ') = LEN('John')
1 এর পরিবর্তে আপনাকে 1 রাখবে
SELECT 1 WHERE DATALENGTH('John ') = DATALENGTH('John')
সমাধানটি হ'ল
আপনি কেবল নিজের অবস্থাতেই একটি সাদা স্থান যুক্ত করতে পারেন।
set @X= 'John \n'
\n
এসকিউএল সার্ভারে কোনও তাত্পর্য নেই। এটি নতুন লাইন হিসাবে ব্যাখ্যা করা হয় না। এটি যাইহোক জিজ্ঞাসা করা প্রশ্নের উত্তর নয়।