Benutzer mit den meisten Antworten
Gross und kleinbuchstaben in einer SQL abfrage unterscheiden

Frage
-
Halle, ich brauche mal wieder ein bischen hilfe
Ich frage über SQL Datenbank in "MS Access" erstellt 3 Werte ab wenn die 3 Werte übereinander Stimmen krieg ich ein meldug zurück.
Das problem ist, dass zb. beim Username und password die abfrage nicht auf die gross und kleinschreibung achtet, wie kann ich das änder.
hier der SQL code:
SELECT COUNT(*) AS Resutat, Username AS UserInput, [Password] AS PassInput, [Level Access]
FROM Users
GROUP BY Username, [Password], [Level Access]
HAVING (COUNT(*) = 1) AND (Username = ?) AND ([Password] = ?) AND ([Level Access] = 10)PS: Code mit Abfrage-Generator erstellt.
MFG
WILWPI
Antworten
-
Hallo,
es ist nicht ganz klar ob Du eine SQL Server Datenbank über Access abfragst,
oder eine Access-Datenbank (MDB/ACCDB).Für den ersten Fall (SQL Server):
Dort ist der Vergleich abhängig von der Sortierung der Spalte festgelegt, siehe COLLATE.
Du müsstest die beiden Spalten z. B. auf Latin1_General_CS_AS ändern.
Für den zweiten Fall:
Access / Jet unterscheidet von Haus aus keine Groß-/Kleinschreibung.
Das geht nur auf Umwegen, siehe dazu: Access FAQ 3.19 Groß- und Kleinschreibung unterscheiden- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. August 2012 08:09
-
Hi, Probier mal:
SELECT COUNT(*) AS Resutat, Username AS UserInput, [Password] AS PassInput, [Level Access]
FROM Users
GROUP BY Username, [Password], [Level Access]
HAVING (COUNT(*) = 1) AND (Username COLLATE Latin1_General_CS_AS = 'UsEr' ) AND ([Password] COLLATE Latin1_General_CS_AS = 'PaSsWoRt' ) AND ([Level Access] = 10)-- UsEr, PaSsWoRt natürlich durch die eigentlichen Daten ersetzen
I appreciate it very much if you vote my Replies as Helpful or Mark as Answer if I could help you out. Thanks!
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. August 2012 08:09
Alle Antworten
-
Hallo,
es ist nicht ganz klar ob Du eine SQL Server Datenbank über Access abfragst,
oder eine Access-Datenbank (MDB/ACCDB).Für den ersten Fall (SQL Server):
Dort ist der Vergleich abhängig von der Sortierung der Spalte festgelegt, siehe COLLATE.
Du müsstest die beiden Spalten z. B. auf Latin1_General_CS_AS ändern.
Für den zweiten Fall:
Access / Jet unterscheidet von Haus aus keine Groß-/Kleinschreibung.
Das geht nur auf Umwegen, siehe dazu: Access FAQ 3.19 Groß- und Kleinschreibung unterscheiden- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. August 2012 08:09
-
Hi, Probier mal:
SELECT COUNT(*) AS Resutat, Username AS UserInput, [Password] AS PassInput, [Level Access]
FROM Users
GROUP BY Username, [Password], [Level Access]
HAVING (COUNT(*) = 1) AND (Username COLLATE Latin1_General_CS_AS = 'UsEr' ) AND ([Password] COLLATE Latin1_General_CS_AS = 'PaSsWoRt' ) AND ([Level Access] = 10)-- UsEr, PaSsWoRt natürlich durch die eigentlichen Daten ersetzen
I appreciate it very much if you vote my Replies as Helpful or Mark as Answer if I could help you out. Thanks!
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 23. August 2012 08:09
-
Hallo WILWPI,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
RobertRobert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Sofern du noch mitliest:
Den Benutzernamen in deutschsprachigen System case-sensitiv zu machen ist imho keine Gute Idee. Ich als Benutzer empfinde so etwas eher als überraschend.Speichere keine Passwörter, sondern ein Hash (z.B. SHA) von selbigem.