SQL SQL letztes Zeichen bei Abfrage ausblenden

Kampfwurst Hugo

Lieutenant
Registriert
Jan. 2010
Beiträge
583
Hallo

Ich habe folgende Frage. Ich sollte eine SQL Abfrage zusammenbasteln doch leider habe ich da ein Problem.

In einer Tabelle steht z.B 0123456a welches ich mit einer anderen Tabelle vergleichen muss. Dort steht aber z.B 0123456*

Wenn ich es mit SELECT * FROM `XXX` WHERE `YYY` LIKE '%0123456a%' abfrage klappt es natürlich nicht. Wie bekomme ich das letze Zeichen weg. Das letzte Zeichen ist immer ein Buchstabe.

Habe es schon mit TRIM probiert. Ohne Erfolg.

Gruß Christoph
 
Guten Morgen,
wenn dein Merkmal in beiden Tabellen YYY heißt, dann könnte dir folgender Ansatz weiterhelfen:
Code:
select a.YYY, b.YYY
from Tabelle1 a
join Tabelle2 b on left(b.YYY,len(b.YYY)-1) = left(a.YYY,len(a.YYY)-1)

Frank
 
Kampfwurst Hugo schrieb:
Wenn ich es mit SELECT * FROM `XXX` WHERE `YYY` LIKE '%0123456a%' abfrage klappt es natürlich nicht. Wie bekomme ich das letze Zeichen weg. Das letzte Zeichen ist immer ein Buchstabe.
Wie wärs mit "LIKE '0123456%'"? Ansonsten wären RegExp noch n Blick wert.
 
Leider bekomme ich es nicht hin.
Leider steht ja z.B 0123456d in derSpalte 1 der Tabelle 1.

In der Tabelle 2 ist aber 0123456* hinterlegt.
Jetzt muss ich die Spalte1 aus Tabelle 1 mit der Spalte 1 aus Tabelle 2 verbinden und mit Spalte 2 aus Tabelle 2 verküpfen.
In Spalte 2 steht z.B die Artikelbezeichnung.

Wenn ich etwas einlese kommt das mit z.B 0123456d herein und ich muss es mit der Artikelbezeichnung ausgeben.

@ FrankR Ich bekomme immer folgende Meldung: ERROR 1305 (42000): FUNCTION .len does not exist

Gruß Christoph
 
Wenn es MySql ist, brauchst du LENGTH(). (Tipp: schau' dir auch mal die Doku dazu an, gibt 'ne kleine Besonderheit )

Wie sieht denn jetzt die Abfrage aus?
 
Falls dir alles im Anschluss an die Artikelnummer egal ist, dann verwende LIKE mit %.

Falls du weitere Unterscheidungen brauchst, benutze SUBSTR() mit LENGTH().

Falls du die Daten danach als Tabelle für weitere Arbeiten benötigst oder es um Millionen/Milliarden Datensätze geht, verwende JOIN wie von FrankR beschrieben.
 
habe es jetzt mit JOIN wie von FrankR beschrieben gemacht. Es sind ca 28.000 Datensätze in der Tabelle 2 die verglichen werden müssen. Das ganze nach dem JOIN in einem Dropdown auszugeben endet in einer Katastrophe :D.

In Tabelle 1 sind ca 100.000 Einträge. Die Suchfunktion kommt später. Pro Tag werden es ca 5.000 Einträge mehr.
 
Ab einer gewissen Größenordnung macht es dann Sinn, diesen Vergleich nicht mehr jedesmal live durchzuführen, sondern die bisher bekannten Ergebnisse zu speichern und nur noch Ergänzungen hinzuzufügen (MERGE bzw. INSERT/UPDATE). Besonders, wenn auf der Kiste noch mehr läuft als nur der Datenbankserver.

Bei den bisherigen Datenmengen würde ich allerdings erstmal nur auf ordentliche Indizes achten. Bis es Performance Issues gibt.
 
Die Datenbank hat doch schon einen elementaren Fehler, wenn sich die Keys zweier Tabellen so stark unterscheiden. Da hat irgend ein Entwickler total ins Klo gegriffen.

The key, the whole key and nothing but the key! So help me Codd!
 
Zurück
Oben