چندين روش براي انجام مقايسه حساس به حروف كوچك و بزرگ (case sensitive) در SQL Server وجود دارد كه در ادامه آنها را مرور خواهيم كرد:
ابتدا جدول موقتي زير را جهت آزمايشات بعدي در نظر بگيريد
CREATE TABLE #tblTest
(
f1 NVARCHAR(50)
)
INSERT INTO #tblTest (f1) VALUES('Test1')
INSERT INTO #tblTest (f1) VALUES('TEST1')
الف) استفاده از collation صحيح
عموما هنگام نصب اس كيوال سرور از collation غيرحساس به كوچكي و بزرگي حروف استفاده ميشود و اين مورد سبب ميشود كه پيش فرض ايجاد ديتابيسها نيز به همين صورت باشد (هر چند كاملا قابل كنترل و تنظيم است). به صورت پويا ميتوان اين collation را در كوئريها نيز اعمال نمود. براي مثال:
SELECT f1 FROM #tblTest WHERE f1 COLLATE SQL_Latin1_General_CP1_CS_AS = 'Test1'
ب) استفاده از تابع BINARY_CHECKSUM اس كيوال سرور (نوعي الگوريتم ويژه، شبيه به امضاي ديجيتال و هش كردن اطلاعات است)
SELECT f1 FROM #tblTest WHERE BINARY_CHECKSUM(f1) = BINARY_CHECKSUM('Test1')
SELECT f1 FROM #tblTest WHERE hashbytes('md5',f1) = hashbytes('md5',N'Test1')
SELECT f1 FROM #tblTest WHERE convert(varbinary(50),f1) = convert(varbinary(50),N'Test1')