• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Suche in mySQL unterschiedliche Länge Suchmuster/Einträge

Frankie777

Advanced Hacker
Hi,
ich habe folgende Einträge in mySQL

a.) "abc800123"
b.) "abc800"
c.) "abc80012"

Ich möchte nach "abc80012345" suchen und a.) soll gefunden werden
Ich möchte nach "abc800129999" suchen und c.) soll gefunden
Ich möchte nach "abc8005555" suchen und b.) soll gefunden

Zur Zeit nehme ich eine Schleife und schneide vom dem Suchstring hinten immer eine Stelle ab und suche neu bis der Eintrag genau passt.

Kann man das in einem SQL-Befehl machen?

Gruß

Frank
 

sc_m

Member
Mit regulären Ausdrücken kann man so etwas wohl basteln, aber einen Schönheitspreis würde ich hiermit vermutlich nicht gewinnen. Und ich weiß auch nicht, wie effizient das ist:
Code:
mysql> SELECT "a" RLIKE "^a(b(c(d)?)?)?$";
+-----------------------------+
| "a" RLIKE "^a(b(c(d)?)?)?$" |
+-----------------------------+
|                           1 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> SELECT "ab" RLIKE "^a(b(c(d)?)?)?$";
+------------------------------+
| "ab" RLIKE "^a(b(c(d)?)?)?$" |
+------------------------------+
|                            1 |
+------------------------------+
1 row in set (0.00 sec)

mysql> SELECT "abc" RLIKE "^a(b(c(d)?)?)?$";
+-------------------------------+
| "abc" RLIKE "^a(b(c(d)?)?)?$" |
+-------------------------------+
|                             1 |
+-------------------------------+
1 row in set (0.00 sec)

mysql> SELECT "abx" RLIKE "^a(b(c(d)?)?)?$";
+-------------------------------+
| "abx" RLIKE "^a(b(c(d)?)?)?$" |
+-------------------------------+
|                             0 |
+-------------------------------+
1 row in set (0.00 sec)
 
OP
Frankie777

Frankie777

Advanced Hacker
Hi,
ich sehe schon, das geht wohl nicht so trivial.

Ich habe auch Fälle wie abc8001 und da muß b.) (abc800) gefunden werden.

Ich weiß vorher auch nicht welche Stellen denn nun vorne fest sind.

Ich denke eine Schleife ist wohl doch eine übersichtliche Lösung.

danke..
 
Oben