Rguläre Ausdrücke mit SQL und Java

Status
Nicht offen für weitere Antworten.

steve77

Bekanntes Mitglied
Hallo, ich hab da eine frage und zwar geht es darum, ich will ein select-statement schreiben, dass mir einen Zahlenbereich aus einer Datenbank ausgibt. Und zwar soll dies folgender massen aussehen. Z.B: 123456*1233 --> Es sollen alle Zhalen ausgegeben werden, die am Anfang die Zahlen 123456 und am ende die zahlen 1233 haben. Ich habe dies mit regulären ausdrücken gemacht.

Code:
String selectRange = "select  * FROM TabelleX where SpalteY REGEXP_LIKE(?.{6}?$)";

Wenn ich diese nun aber in einem Datenbanktool teste (z.B . SQirrel), dann bekomm ich immer folgenden fehler:

Error: nicht unterstütztes SQL92-Token in Position ....
SQL-Statement: null, ErrorCode: 17034


Weiss jemand warum das so ist, oder kann mir sagen wie ich das Staement bauen muss, damit es klappt? Danke!!
 

steve77

Bekanntes Mitglied
sorry, natürlich so:

Code:
String selectRange = "select  * FROM TabelleX where SpalteY REGEXP_LIKE(123456.{6}1233$)";
 
M

maki

Gast
Seit wann versteht SQL regülare Ausdrücke???

where und like reichen für deine Aufgabe bei weitem aus.
 

steve77

Bekanntes Mitglied
Ich weiss nicht wie lange es das gibt, aber sql kann reguläre ausdrücke auswerten! Die einfachen abfragen gehen nicht, weil Oder vielleicht doch?... Noch mal zum Beispiel: 123456*1233

Die ersten 6 müssen gegeben sein, es gibt eine untere Grenze, das heisst alle nummern mit 123456 und eine oberer Grenze: also 1233.
Wie würde das denn mit where und like aussehen?
 
M

maki

Gast
Das ist kein SQL sondern irgendeine Funktion des RDBMS Servers, solltest du nicht verwenden, sonst kannst du nicht mehr umsteigen.

Wie gesagt, das Problem ist mit Standard SQL sehr einfach in den Griff zu kriegen..

WHERE spalte LIKE '123456%1233'

Solltest dich mehr auf SQL konzentrieren anstatt zu versuchen da regex einzusetzen.
 

steve77

Bekanntes Mitglied
Ja danke, werd ich berücksichtigen :D
Ich hab da aber noch eine weitere Frage: Wenn ich das ganze nun mit preparestatements machen will, würde ich das so machen:


Code:
public String NoEquals(){
		
		String givenNoEquals = null;
		
		try {
			String selectRange = "select  * FROM STORE where No LIKE 123456%1233;
			PreparedStatement stmt = getConnection().prepareStatement(selectRange);
			stmt.clearParameters();
			stmt.setString(1, rangeOfNo.getLow());// der Intervall von
			stmt.setString(2, rangeOfNo.getHigh());//der intervall bis
			ResultSet result = stmt.executeQuery("STORE");
			if (result.next()) {
				givenNoEquals = result.getString("STORE");
			}
		} catch (SQLException sqle) {
			System.out.println("Fehler bei der Datenbankabfrage" + "abfrage:\n"
					+ sqle.getMessage());	
		}
		return givenNoEquals;

Ich hoffe, das das so richtig ist. Vielen Dank schonmal für die Hilfe :D
 

steve77

Bekanntes Mitglied
Mist schon wieder was vergessen. Natürlich so:
Code:
 String selectRange = "select  * FROM STORE where No LIKE ?%?;
 
S

SlaterB

Gast
wenn überhaupt dann nur ein ?
und
rangeOfNo.getLow() + "%" + rangeOfNo.getHigh())
wirds du dir doch wohl zusammenbauen können?

obs aber mit LIKE funktioniert, wird dir ein Test sagen, kein Forum ;)
 

steve77

Bekanntes Mitglied
sieht gut aus, aber wie sieht es denn aus wenn beide Werte nicht feststehen. Soll heißen, das der untere Wert zur laufzeit noch nicht feststeht, genauso wie der obere. Diese können also nicht hartcodiert werden. Dann brauche ich doch zwei ? oder nicht?
 
S

SlaterB

Gast
warum zwei '?'? was meinst du damit, dass der untere Wert nicht feststeht?
du kannst doch keine unfertige Query ausführen?

mit nur einem ? bist du dagegen voll flexibel und kannst auch nur
"%" + rangeOfNo.getHigh()
übergeben statt
rangeOfNo.getLow() + "%" + rangeOfNo.getHigh()
 

steve77

Bekanntes Mitglied
Es sieht folgender massen aus. Ich bekomme eine Liste mit Intervallen, diese soll abgearbeitet werden. Der User gibt z.B. ein ich will alle nummern haben, die mit 123456 anfangen und mit 1233 aufhören, was dazwischen liegt ist erstmal egal. Deswegen sind ja zwei werte unbekannt!
 

steve77

Bekanntes Mitglied
halt mich nicht für begriffsstutzig... soll also so aussehen:

Code:
public String NoEquals(){ 
       
      String givenNoEquals = null; 
       
      try { 
         String selectRange = "select  * FROM STORE where No LIKE ?; 
         PreparedStatement stmt = getConnection().prepareStatement(selectRange); 
         stmt.clearParameters(); 
         stmt.setString(1, rangeOfNo.getLow() + "%" + rangeOfNo.getLow() ); 
          
         ResultSet result = stmt.executeQuery("STORE"); 
         if (result.next()) { 
            givenNoEquals = result.getString("STORE"); 
         } 
      } catch (SQLException sqle) { 
         System.out.println("Fehler bei der Datenbankabfrage" + "abfrage:\n" 
               + sqle.getMessage());    
      } 
      return givenNoEquals;
 
S

SlaterB

Gast
da du nicht mehr 2 ? sondern nur noch 1 ? hast, kann ich diese Mecker nicht wiederholen, bin insofern also zufrieden ;)

obs korrekt läuft zeigt dir ein Klick auf den Run-Button,
das kann ich persönlich leider nicht bezeugen

-----


hinter dem SQL fehlt ";
 

Niki

Top Contributor
Code:
ResultSet result = stmt.executeQuery("STORE");

gib das "STORE" raus.
also:
Code:
ResultSet result = stmt.executeQuery();

Ansonsten schaut es recht vernünfigt aus, wobei ich glaub das clearParameters dürfte auch überflüssig sein.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
W Java -> MariaDB BIGINT benutzen Datenbankprogrammierung 2
MJannek Äquivalent zu Django Models in Java Datenbankprogrammierung 65
Juelin Java und MySQL MariaDB - WHERE-Klausel Datenbankprogrammierung 17
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
K Java Datenbank auslesen Datenbankprogrammierung 8
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
B Java Programm und Dantebank umlagern Datenbankprogrammierung 25
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
dzim Cassandra Cluster DB und der Java-Treiber Datenbankprogrammierung 1
H Entity in Java implementieren Datenbankprogrammierung 13
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4
P Datanbank für Java-Programmierung Datenbankprogrammierung 10
F Java SQLite Error Datenbankprogrammierung 19
F SQL Datenbank an Java Code anbinden Datenbankprogrammierung 5
J Java 8 und Microsoft Access Database-Dateien(mdb) Datenbankprogrammierung 1
H HSQLDB Beim öffnen folgender Fehler: ... java.lang.NullPointerException Datenbankprogrammierung 1
H SHOW Tables in Java/MySQL Datenbankprogrammierung 8
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
M Feedback für neues Buch über "Java und Datenbanken" erwünscht Datenbankprogrammierung 8
M Wie übergebe ich Datenbankobjekte aus einer sql-Datenbank einer Java Klasse bzw. Instanz Datenbankprogrammierung 7
D Zeit von SQL nach Java Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben