Namensabfrage mit Schleife für HQL

Status
Nicht offen für weitere Antworten.
Hallo, ich hoffe ich kann mein Problem detailliert genug schildern.

Also ich habe einen String, der einen Namen enthält (z.B: "Maier"). Der soll in eine Datenbank gespeichert werden, parallel soll aber überprüft werden, ob der Name (evtl. mit anderer Schreibweise) schon existiert.

Das klappt auch soweit. Der Code hierzu:

Code:
// Abfrage der EI/AI/EIH/EY/AY-Gruppe
        
String stringAi = "ai";
String stringEih = "eih";
String stringAy = "ay";
String stringEy = "ey";
String stringEi = "ei";
String stringIj = "eij";
String eiGroup = "";

if (pruefString.contains(stringIj)) {   eiGroup = stringIj;   }
else if (pruefString.contains(stringEi)) {   eiGroup = stringEi;   }
else if (pruefString.contains(stringAi)) {   eiGroup = stringAi;   }
else if (pruefString.contains(stringEih)) {   eiGroup = stringEih;   }
else if (pruefString.contains(stringEy)) {   eiGroup = stringEy;   }
else if (pruefString.contains(stringAy)) {   eiGroup = stringAy;   }
    	
if (pruefString.contains(eiGroup)) {
       	stringEi = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEi + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());
       	if (hql.endsWith("WHERE")) {
      		hql += " c." + abfrageFeld + " Like :stringEi";
       	}
      	else {
       		hql += " OR c." + abfrageFeld + " LIKE :stringEi";
       	}
      	stringAi = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringAi + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length()); 
       	hql += " OR c." + abfrageFeld + " LIKE :stringAi";
       	stringEih = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEih + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length()); 
       	hql += " OR c." + abfrageFeld + " LIKE :stringEih";
       	stringEy = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEy + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length()); 
       	hql += " OR c." + abfrageFeld + " LIKE :stringEy";
       	stringAy = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringAy + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length()); 
       	hql += " OR c." + abfrageFeld + " LIKE :stringAy";
       	stringIj = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringIj + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length()); 
       	hql += " OR c." + abfrageFeld + " LIKE :stringIj";
}

pruefString ist meine Name (Bsp.: Maier)

Nun überprüft er, ob [Meier, Maier, Mayer, Meyer, Meijer oder Meiher] existiert, egal in welcher Schreibweise ich Maier eingebe.

Nun gibt es aber Namen, wo "ei", "ai", "ey", "ay", "eij", "eih" mehr als einmal vorkommt.

Beispiel.: "Schweinsteiger"

Nun würde nur nach folgenden Schreibweisen geschaut.

- Schweinsteiger
- Schwainstaiger
- Schweynsteiger
- Schwaynsteiger
- Schweijnsteiger
- Schweihnsteiger

Aber im hinteren Teil steckt ja auch noch ein "ei" (...steiger)

Er soll also in dem Fal prüfen, ob folgende Kombinationen schon in der Datenbank vorhanen sind:

- Schw(ei/ai/ey/ay/eij/eih)nsteiger
- Schw(ei/ai/ey/ay/eij/eih)nstaiger
- Schw(ei/ai/ey/ay/eij/eih)nsteyger
- Schw(ei/ai/ey/ay/eij/eih)nstayger
- Schw(ei/ai/ey/ay/eij/eih)nsteijger
- Schw(ei/ai/ey/ay/eij/eih)nsteihger

Wie bekomme ich das hin? Ich habe da evtl. an eine For-Schleife gedacht, wüsste aber nicht, diese einzubauen.
[/code]
 
naja so ganz das wahre ist das in meinen Augen auch nicht. Vor allem wenn man mal bedenkt, dass "Britney Spears" und eine "bewährte Superzicke" phonetisch das gleiche ist :p

Deswegen will ich das ja auch selber schreiben. Die Abfrage für jeden einzelnen Fall habe ich ja auch. Das Problem ist halt nur, dass keine Gruppe (z.B. Ei oder Äu) mehrfach vorkommen darf.
 
S

SlaterB

Gast
eine knifflige rekursive Variante:

du durchsuchst das Wort nach allen benötigten Teilen und bildest ein Array/ eine Liste der einzelnen Zwischen-Wortteile,
entweder per indexOf, was für sich schon ein ähnlich großes Problem ist
oder mit

Code:
public class Test
{

    public static void main(String[] args)
        throws Exception
    {

        String st = "Schweinsteiger ";
        System.out.println(Arrays.toString(st.split("(ei|ai)")));

    }
}

dann kannst du eine rekursive Operation schreiben:

Berechnung der Liste der Kombinationen für eine Liste der Wortteile:
a) Liste X der Kombinationen für kleinere Liste der Wortteile ohne ersten Wortteil bestimmen,
b) für jedes Element y aus X 6 neue Ausdrücke erstellen: erstes Wortteil + eine der 6 'ei's + y
 
Na prima, da steige ich gerade überhaupt nicht durch. Ich brauche doch nur so etwas wie eine einfache for-Schleife

Ich kenne mich da auch nicht ganz so aus. Geht es eigentlich wenn ich eine Methode ueberpruefe() aufbaue, wo ich alle Algorithmen einbaue und dann in der Zeile

Code:
stringEy = pruefString.substring(0, pruefString.indexOf(eiGroup)) + stringEy + pruefString.substring(pruefString.indexOf(eiGroup)+eiGroup.length(), pruefString.length());

Das "pruefString.substring(0, pruefString.indexOf(eiGroup))" in "pruefString.substring(0, pruefString.indexOf(eiGroup)).ueberpruefe()" oder so ähnlich umwandel, womit ich ihm dann sage, er soll für den substring das ganze nochmal durchlaufen.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D HSQLDB INSERT INTO in einer For Schleife mit selber ID, machbar? Alternative? Datenbankprogrammierung 7
N String Array in While Schleife befüllen Datenbankprogrammierung 2
L "while(rs.next)" - Schleife Datenbankprogrammierung 5
A Oracle Update Befehl in Datenbank anhand einer Schleife Datenbankprogrammierung 8
M executeQuery bricht for-Schleife ab Datenbankprogrammierung 9
M Probleme bei Select in Schleife Datenbankprogrammierung 7
S Schleife in SQL? Datenbankprogrammierung 5
R Select und Insert in Schleife - Problem mit ResultSet Datenbankprogrammierung 2
D Verknüpfung auflösen für Frontend Datenbankprogrammierung 7
R Beste Lösung für User Erstellung in mongodb Datenbankprogrammierung 1
I SaaS Applikation: pro Kunde eine Datenbank / Schema oder eine DB für alle Kunden? Datenbankprogrammierung 76
O apache derby in eclipse für Datenbanken einbauen Datenbankprogrammierung 3
Zrebna Empfehlung für ein kostenloses DB-Hosting gesucht Datenbankprogrammierung 6
M Lösungsvorschläge für Multi-User Datenbankprogrammierung 1
M Alle Records Felder kriegen für DB Abfrage Datenbankprogrammierung 14
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5
Kirby.exe Denkanstoß für Ranking Datenbankprogrammierung 1
L Oracle Repräsentative Namen für die Column Types Datenbankprogrammierung 9
OnDemand Struktur für Parent / Child Produkt Datenbankprogrammierung 5
N ORM für Sqlite Datenbankprogrammierung 4
I Konzept: Klasse / Entity für Einstellung der Software Datenbankprogrammierung 3
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
ruutaiokwu MySQL MariaDB-Client-Zertifkate, nur für einen bestimmten User Datenbankprogrammierung 5
B Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle Datenbankprogrammierung 12
O Dokumentation für MariaDB 10.3. Datenbankprogrammierung 2
F MariaDatabase Einstellungen für Verbindungen Datenbankprogrammierung 5
Dimax MySQL Trigger für eine Spalte Datenbankprogrammierung 5
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
B Brauche Tipps für Datenbankdesign Datenbankprogrammierung 8
B Tabelle für "wiederkehrende Rechnungen" Datenbankprogrammierung 12
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
J Warum sind Sockets für einen Live-Chat sinnvoll? Datenbankprogrammierung 8
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
X PostgreSQL Datenbankdesign für Vokabeltrainer Datenbankprogrammierung 48
@SupressWarnings() HSQLDB Datenbank für mein Dorfbauspiel "Time of Kings" Datenbankprogrammierung 6
M Idee Umsetzung //NFC Eintrittskarten für Geburtstag Datenbankprogrammierung 2
looparda Architektur für JPA Hibernate Umstieg Datenbankprogrammierung 14
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
J SQLite Ich muss für mein Projekt meine Datenbank Kapseln Datenbankprogrammierung 2
J Tipps für ERM Datenbankprogrammierung 4
P Highlevel-Lösung für Speicherung von Baumstruktur mit unbekannter Tiefe Datenbankprogrammierung 1
F welche Datenbank für Messwerte? Datenbankprogrammierung 4
E Warum werden für Datenbanktabellen Schemanamen festgelegt? Datenbankprogrammierung 1
M DB Schema für Vokabeltrainer Datenbankprogrammierung 2
U SQLite Für mich etwa komplexe Abfrage via 2 Tabellen Datenbankprogrammierung 5
E Kann man, wenn man in DB2 Tabellen erstellt hat für dessen auch einen Command-File erstellen? Datenbankprogrammierung 1
T NoSQL Connection für die Thesis [GWT] Datenbankprogrammierung 1
J SQLite Abfrage ausführen stoppt für Zyklus? Wie es zu lösen? Datenbankprogrammierung 3
S HSQLDB Fehlermeldung für den Bildschirm Datenbankprogrammierung 3
L Datenmodell erstellen für eine Nutzertanalyse Datenbankprogrammierung 1
I Query für Geburtstage Datenbankprogrammierung 6
L Zentrale Datenbank im Internet für Spiele Highscores? Datenbankprogrammierung 1
P Derby/JavaDB Csv Datei für dieses Musterprogramm Datenbankprogrammierung 12
ruutaiokwu code-formatter für t-sql... Datenbankprogrammierung 12
J Plug-In-Framework für Hibernate-Klassen Datenbankprogrammierung 0
T Mehrsprachigkeit für Tabellenfelder Datenbankprogrammierung 6
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
F MSSql oder MongoDB für die Speicherung von POI Datenbankprogrammierung 9
G SQLite SQLite Select für View vereinfachen/optimieren Datenbankprogrammierung 4
P MySQL Historie für ein Objekt anlegen Datenbankprogrammierung 5
P MySQL eine richtige Datenbank für einen routenplaner erstellen Datenbankprogrammierung 2
K JDBC- In Java "stored procedure" erstellen für DB2,OracleSql ... Datenbankprogrammierung 3
J Datenbank für Fragen/ Antworten Datenbankprogrammierung 7
O Datenbankschnittstelle für Java Datenbankprogrammierung 8
L Datenbank für kleinere Anwendungen Datenbankprogrammierung 3
N Query für Derby DB mit Enterbrise Bean Datenbankprogrammierung 4
S ich brauche tipps für JDBC Datenbankprogrammierung 4
I Hibernate - Best Practice für Lazy Loading Datenbankprogrammierung 3
R MySQL Voraussetzungen für eine erfolgreiche Datenbankanbindung mittels JDBC Datenbankprogrammierung 2
GianaSisters SQL Befehl für allgemeine Datenbankexistenz Datenbankprogrammierung 4
B Beispiel für sicheres DBUsername/DBPassword handling Datenbankprogrammierung 4
I Anfänger-Tutorial für Hibernate gesucht Datenbankprogrammierung 3
heart_disease Beratung für Datenbankdesign Datenbankprogrammierung 13
C Embedded DB für Java Datenbankprogrammierung 26
J Unterstützung für verschiedene Datenbanken Datenbankprogrammierung 2
L MySQL Probleme mit PreparedStatement für SQL-Abfrage in Java Datenbankprogrammierung 2
F suche Erstanschub für DB-Zugriff Datenbankprogrammierung 9
F MySQL SQL Abfrage für u.a. Spaltenname key Datenbankprogrammierung 4
T ResultSet befehl für leere Spalte nicht lesen Datenbankprogrammierung 4
F Performance-Tool für Oracle Datenbankprogrammierung 2
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
C Split String für SQl query Datenbankprogrammierung 10
A update methode für datenbank Datenbankprogrammierung 2
N Datenbank für Dateien Datenbankprogrammierung 6
N Datenbank für einen Stundenplan Datenbankprogrammierung 4
G welche Datenbanktabellen für folgende Attribute Datenbankprogrammierung 3
R Connection Problem für eine externe DB mit Java (JDBC) Datenbankprogrammierung 9
S JPA (EntityManager für jeden Nutzer?) Datenbankprogrammierung 8
J Buffer Manager für Datenbank Datenbankprogrammierung 4
F SQL Voraussetzung für JDBC? Datenbankprogrammierung 10
R Bei Webformular DropDown Felder JA, NEIN! Was für einen Datentyp verwenden? Datenbankprogrammierung 7
T SSL Zertifikat für mysql datenbankzugriff Datenbankprogrammierung 6
T Debugger für SQL? Datenbankprogrammierung 5
Chtonian Effizientes Query System für Wortnachschlagewerk Datenbankprogrammierung 9
G Tabelle für Zeitraum sperren Datenbankprogrammierung 4
A Struct für Datenbank abfrage? Datenbankprogrammierung 12
O Hibernate für Eclipse Datenbankprogrammierung 5
T JPQL Query für eine Tabellenansicht Datenbankprogrammierung 2

Ähnliche Java Themen


Oben