Jawaban:
Dapat dilakukan dengan mengubah Collation . Secara default itu tidak sensitif huruf.
Kutipan dari tautan:
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ßversus:/schwarz-weiss
Dengan menggunakan collation atau casting ke biner, seperti ini:
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
Duplikasi nama pengguna / kata sandi ada untuk memberi mesin kemungkinan menggunakan indeks. Susunan di atas adalah susunan Huruf Sensitif, ubah ke yang Anda butuhkan jika perlu.
Yang kedua, casting ke biner, bisa dilakukan seperti ini:
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*"pencarian SQL biasa akan dimasukkan.
Anda dapat membuat kueri menggunakan convert ke varbinary - sangat mudah. Contoh:
Select * from your_table where convert(varbinary, your_column) = convert(varbinary, 'aBcD')
GUNAKAN BINARY_CHECKSUM
SELECT
FROM Users
WHERE
BINARY_CHECKSUM(Username) = BINARY_CHECKSUM(@Username)
AND BINARY_CHECKSUM(Password) = BINARY_CHECKSUM(@Password)
gunakan 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
... di mana klausa
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
atau untuk menemukan nilai
declare @value_b nvarchar(1) = 'A'
select ValueB + ' = ' + @value_b
from @example
where hashbytes('SHA1', ValueB) = hasbytes('SHA1', @value_b)
-- output:
-- A = A
Di MySQL jika Anda tidak ingin mengubah collation dan ingin melakukan pencarian case sensitif maka gunakan saja kata kunci biner seperti ini:
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))
Seperti yang dikatakan orang lain, Anda dapat melakukan pencarian case sensitif. Atau cukup ubah format pemeriksaan kolom yang ditentukan seperti saya. Untuk kolom Pengguna / Kata Sandi di basis data saya, saya mengubahnya ke susunan melalui perintah berikut:
ALTER TABLE `UserAuthentication` CHANGE `Password` `Password` VARCHAR(255) CHARACTER SET latin1 COLLATE latin1_general_cs NOT NULL;