Abfrage ob in einer HSQLDB substring in einem Datensatz vorhanden ist

  • Themenstarter Themenstarter BlackPanter
  • Beginndatum Beginndatum
B

BlackPanter

Guest
Hi,

ich habe in eine HSQLDB das OpenOffice Wörterbuch eingelesen. Dies brauch ich, da wir im Studium ein Scrabble-Spiel programmieren und ich darüber abfrage ob das gelegte Wort valid ist.

Jetzt möchte ich eine einfach KI dazu programmieren. Dazu möchte ich mir zu einem Buchstaben alle Wörter in einem Array speichern lassen, die den entsprechenden Buchstaben enthalten.
Mit dem String-Array das ich dadurch erhalte möchte ich, ausgehen von der enstprechenden Stelle des Buchstaben die Wörter überprüfen.

Ist dies mit SQL bzw. HSQLDB möglich?
Oder muss ich ne entsprechende Tablle anlegen und die ganzen Wörter manuel einsortieren?

Die alternative wäre, aus den vorhandenen Buchstaben alle möglichen Kombinationen zu erstellen und Abfragen zu lassen. Wenn ich mich nicht verrechnet habe, sind das schätzungsweise ca 40.000 * x Abfragen.
x sind die Buchstaben an denen es möglich ist anzulegen.
Gelesen habe ich, dass ca. 4000 SQL-Abfragen pro Sekunde durchgeführt werden können, was zu ner Berechnungszeit von ca. 10 Sekunden pro Buchstabe führt, was in meinen Augen viel zu ineffizient ist.

Grüße
Sören
 
Ganz "einfach" wäre es da mit Platzhaltern zu arbeiten. Also für "a" sowas wie

Code:
SELECT x FROM y WHERE z LIKE %a%;

wobei das vermutlich genau die Variante ist die ewig dauert :)
 
Zuletzt bearbeitet:
Danke. Das klappt jetzt soweit.

Jetzt hab ich nen anderes Problem.

eine Tabelle hat folgende Struktur:

Sp 1, Sp 2, Sp 3,...

jetzt füll ich zuerst die erste spalte und der rest is null.

Wenn ich jetzt Spalte 2 füllen möchte werden die mir jedoch unten angehängt das es etwa so aussieht: "null, Wert, null,.."
Ich möchte jedoch das es folgendermaßen aussieht: "Wert, Wert, null, ...

Gibts ne möglichkeit in SQL oder muss ich mir nen Workaround überlegen?
 
Deine Fragen zeigen, dass du eigentlich gar nicht weißt was du da tust. Du solltest du dich erstmal mit dem Thema Datenbanken & SQL grundlegend vertraut machen!

Wenns um Datenbanken geht musst du zeilenweise denken und nicht spaltenweise. Jede Zeile ist ein Datensatz. Wenn du eine Zeile einfügst, dann wird die am Ende der Tabelle angehangen, ganz unabhängig davon welche Spalten dein Insert befüllt

Um deine Frage genauer zu beantworten: Entweder du gibst beim ersten Insert direkt die Daten für beide Spalten an oder du änderst die entsprechenden Zeilen in dem du das Update Statement nutzt.

Ab jetzt bitte weniger fragen, sondern mehr lesen! Nicht böse, aber ernst gemeint! :wink:
 
Zurück
Oben