जवाबों:
Collation को बदलकर किया जा सकता है । डिफ़ॉल्ट रूप से यह असंवेदनशील है।
लिंक से अंश:
SELECT 1
FROM dbo.Customers
WHERE CustID = @CustID COLLATE SQL_Latin1_General_CP1_CS_AS
AND CustPassword = @CustPassword COLLATE SQL_Latin1_General_CP1_CS_AS
/schwarz-weißबनाम:/schwarz-weiss
बाइनरी को कोलिशन या कास्टिंग का उपयोग करके, जैसे:
SELECT *
FROM Users
WHERE
Username = @Username COLLATE SQL_Latin1_General_CP1_CS_AS
AND Password = @Password COLLATE SQL_Latin1_General_CP1_CS_AS
AND Username = @Username
AND Password = @Password
इंजन को इंडेक्स का उपयोग करने की संभावना देने के लिए उपयोगकर्ता नाम / पासवर्ड का दोहराव मौजूद है। ऊपर दिया गया टकराव एक केस सेंसिटिव कॉलेशन है, यदि आवश्यक हो तो उसे बदल दें।
दूसरा, बाइनरी कास्टिंग, इस तरह किया जा सकता है:
SELECT *
FROM Users
WHERE
CAST(Username as varbinary(100)) = CAST(@Username as varbinary))
AND CAST(Password as varbinary(100)) = CAST(@Password as varbinary(100))
AND Username = @Username
AND Password = @Password
like "*word or phrase*"एसक्यूएल खोज के समान वाक्यांश डाला जाएगा।
आप परिवर्तनीय का उपयोग करके क्वेरी बना सकते हैं - यह बहुत आसान है। उदाहरण:
Select * from your_table where convert(varbinary, your_column) = convert(varbinary, 'aBcD')
उपयोग BINARY_CHECKSUM
SELECT
FROM Users
WHERE
BINARY_CHECKSUM(Username) = BINARY_CHECKSUM(@Username)
AND BINARY_CHECKSUM(Password) = BINARY_CHECKSUM(@Password)
HASHBYTES का उपयोग करें
declare @first_value nvarchar(1) = 'a'
declare @second_value navarchar(1) = 'A'
if HASHBYTES('SHA1',@first_value) = HASHBYTES('SHA1',@second_value) begin
print 'equal'
end else begin
print 'not equal'
end
-- output:
-- not equal
... कहां खंड में
declare @example table (ValueA nvarchar(1), ValueB nvarchar(1))
insert into @example (ValueA, ValueB)
values ('a', 'A'),
('a', 'a'),
('a', 'b')
select ValueA + ' = ' + ValueB
from @example
where hashbytes('SHA1', ValueA) = hashbytes('SHA1', ValueB)
-- output:
-- a = a
select ValueA + ' <> ' + ValueB
from @example
where hashbytes('SHA1', ValueA) <> hashbytes('SHA1', ValueB)
-- output:
-- a <> A
-- a <> b
या एक मूल्य खोजने के लिए
declare @value_b nvarchar(1) = 'A'
select ValueB + ' = ' + @value_b
from @example
where hashbytes('SHA1', ValueB) = hasbytes('SHA1', @value_b)
-- output:
-- A = A
MySQL में यदि आप कोलाज नहीं बदलना चाहते हैं और केस सेंसिटिव सर्च करना चाहते हैं तो इस तरह से बाइनरी कीवर्ड का उपयोग करें:
SELECT * FROM table_name WHERE binary username=@search_parameter and binary password=@search_parameter
select * from incidentsnew1
where BINARY_CHECKSUM(CloseBy) = BINARY_CHECKSUM(Upper(CloseBy))
जैसा कि दूसरों ने कहा है, आप एक केस संवेदनशील खोज कर सकते हैं। या मेरे रूप में एक निर्दिष्ट कॉलम के टकराव प्रारूप को बदल दें। मेरे डेटाबेस में उपयोगकर्ता / पासवर्ड कॉलम के लिए मैं उन्हें निम्नलिखित कमांड के माध्यम से टकराव में बदल देता हूं:
ALTER TABLE `UserAuthentication` CHANGE `Password` `Password` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL;