rozróżnienie dużych liter w MSSQL

rozróżnienie dużych liter w MSSQL
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam

mam panel logowania do aplikacji, gdzie user podając login prawidłowy ale dużymi literami lub <ort>abstrachując </ort>na przemian dużymi i małymi, zapytanie SQL przepuszcza, bo w MSSQL Server 2000 wystarczy że podamy w predykacie WHERE podamy prawidłowy ciąg znaków.

SELECT Login,Psd
From LOGUJ
WHERE Login = 'aaa' //'AAA' tak ma byc zle, a przepuszcza

bordeux
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Chorzów
  • Postów: 1130
0

Na przykładzie MySQL
Sposob1. W MySql zmieniasz w komórce metode porównywania napisów na -> utf8_bin . przynajmniej ja tak robiłem, lecz jak widać głupi sposób,
Sposob 2
BINARY

Kopiuj
SELECT Login,Psd
From LOGUJ
WHERE BINARY Login = 'aaa'   //'AAA'  tak ma byc zle, a przepuszcza
  • Rejestracja: dni
  • Ostatnio: dni
0

BINARY znam, ale to nie działa w MSSQL Server 2000

AP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3079
0

Zmień reguły porównań dla tego pola na collate SQL_Polish_Cp1250_CS_AS

Całość ma wyglądać:

Kopiuj
select Login,Psd from LOGUJ where Login = 'aaa' collate SQL_Polish_Cp1250_CS_AS
  • Rejestracja: dni
  • Ostatnio: dni
0

o kurcze, to musiałbym zmienić wszystkie tabele w bazie danych, a jak to zrobic na konkretnej tabeli ?

P.S.
w bazie mam kodowanie Polish_CI_AS

AP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3079
0

Przykład przeze mnie podany zmienia reguły dla tego konkretnego zapytania. Można również zmienić dla konkretnego pola w tabeli na stałe albo dla całej bazy, więcej w google...

crowa
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Poznań
  • Postów: 295
0

a gdybys mial taka strukture (defakto bezpieczniejsza)

tabela users a w niej pola user varachar i pass varchar. Oba pola mialy by wartosci wyliczone przez MD5
i tak np Twoj user aaa nie bylby zapisany w bazie jako aaa tylko jako MD5(aaa).

Przy porownywaniu w bazie zrobilbys tylko

SELECT pass FROM users WHERE user = 'sjkdancjwe...itd'

Pozniej robisz MD5 z tego co user wpisal w pole pass w okienku logowania i porownujesz z tym co dostales z bazy.
Jak dostaniesz 0 rekordow to komunikat 'sorry ludku ale takiego usera nie ma w bazie'

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.