Immer noch keine Idee - case sensitiv

Soapp

Erfahrenes Mitglied
Ich müsste Daten in eine MYSQL Datenbank einpflegen ...

z. bsp

test
TEST
Test

ein weiterer Versuch test, TEST oder Test reinzuhämmern sollte nicht möglich sein ..

ein UNIQUE Index kommt also nicht in Frage, oder ?
ich habs zumindestens probiert, aber nach dem ersten test liess er mich nicht mehr TEST reinschreiben.


Wie könnte ich das Problem lösen ?

Danke
 
Soapp hat gesagt.:
... ein weiterer Versuch test, TEST oder Test reinzuhämmern sollte nicht möglich sein ..
... aber nach dem ersten test liess er mich nicht mehr TEST reinschreiben.
Problem gelöst, oder? Was willst Du nun wirklich?

Gruß hpvw
 
hpvw hat gesagt.:
Problem gelöst, oder? Was willst Du nun wirklich?

Gruß hpvw


:)
ok ich hab mich etwas umständlich ausgedrückt .......

von jedem Wort sollen 3 versionen rein

1) alles gross
2) alles klein
3) Anfangsbuchstabe gross

Nun will ich aber verhindern, dass das selbe Wort nocheinmal eingetragen wird ...
wenn test, TEST und Test drinnsteht, dann will ich nicht, dass das nocheinmal eingetragen wird ....
UNIQUE INDEX geht in dem Falle nicht, weil ich nicht 3 mal das selbe Wort drinnstehen haben kann .. MYSQL chekct hier nicht, dass das Wort 3 mal verschieden geschrieben wird.....

Was könnte ich tun um ein Wort dreimal reinzuschreiben (mit versch. Gross/Kleinschreibung) aber ich verhindern kann, dass es nicht nocheimal reingeschrieben wird.

verstehst du ?
 
hpvw hat gesagt.:
Ich habe es noch nicht ganz begriffen, aber vielleicht hilft Dir ein CHAR BINARY (Siehe CREATE TABLE-Syntax bei den Typen und CHAR- and VARCHAR-Types) i.V.m. einem UNIQUE-Index.

Gruß hpvw


ich will dass in der datenbank drinnsteht

Test
TEST
test
Wunderbar
WUNDERBAR
wunderbar
...............
..............
kommt jetzt ein INSERT into tabelle ('Test')
dann soll MYSQL sagen : nene, das ist schon drinn

Anderes beispiel:
hab ich zum Beispiel in der Datenbank drinnstehen:

TEST
test

und amch dann erst eine Abfrage ob das Wort schon existiert
select count(*) from words where word = 'Test'
if count == 0 dann mach INSERT INTO Tabelle ('Test')

dann wird er mir in deisem Fall sagen, dass "Test" schon drinnsteht, obwohl in
Wirklichkeit nur TEST und test drinnstehen

;-)

ODER noch einfacher ausgedrückt:

wenn ich ein SELECT * from words where word = 'Test'

dann will ich wirklich nur 1 Zeile zurückbekommen und nicht wie momentan 3 :)
 
Zuletzt bearbeitet:
Dann definiere das Feld als CHAR(<länge>) BINARY oder VARCHAR(<länge>) BINARY und setze eine UNIQUE-Index auf das Feld.
Du kannst nicht alle drei automatisch auf einmal einfügen, sondern musst drei Queries absetzen. Dass keine Wörter ala "wORt" eingefügt werden können, kannst Du mit MySQL alleine nicht lösen, sondern musst es in Deiner Anwendungssprache überprüfen.

Gruß hpvw
 
hpvw hat gesagt.:
Dann definiere das Feld als CHAR(<länge>) BINARY oder VARCHAR(<länge>) BINARY und setze eine UNIQUE-Index auf das Feld.
Du kannst nicht alle drei automatisch auf einmal einfügen, sondern musst drei Queries absetzen. Dass keine Wörter ala "wORt" eingefügt werden können, kannst Du mit MySQL alleine nicht lösen, sondern musst es in Deiner Anwendungssprache überprüfen.

Gruß hpvw


die Spalte words ist momentan ein VARCHAR 100

probier doch mal aus was passiert wenn du einen UNIQUE Index drauf setzt.
DU kannst nur 1 Wort von den 3 gewünschten Variationen reinschreiben
Du kannst z. Bsp Test reinschreiben, aber bei TEST wird er dann sagen dass das
Wort schon vorhanden ist ....
Oder reden wir total aneinander vorbei ? ;-)

Danke
 
OH JAAAAAAAAAAAA

es funktioniert

mit varbinary dann kann ich TEST test und test reinpflanzen, versuch ich aber nochmal
TEST test oder Test dann meckert er .. perfekt

Tausend Dank :)

Auf hpvw ist doch immer Verlass :)
 
Ein VARBINARY ist noch etwas anderes, als ein VARCHAR mit dem Attribut BINARY. Letzteres arbeitet bezüglich des UNIQUE-Index und des Vergleichsverhaltens genauso, wie ein VARBINARY ist jedoch immer noch ein Text und keine reine Bytefolge.

Gruß hpvw
 
Zurück