SQL SQL letztes Zeichen bei Abfrage ausblenden

Kampfwurst Hugo

Lieutenant
Dabei seit
Jan. 2010
Beiträge
554
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
 

FrankR

Cadet 3rd Year
Dabei seit
Mai 2011
Beiträge
33
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

Lieutenant
Ersteller dieses Themas
Dabei seit
Jan. 2010
Beiträge
554
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
 

Darlis

Commodore
Dabei seit
Jan. 2011
Beiträge
4.228
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?
 

Shagrath

Fleet Admiral
Dabei seit
Mai 2001
Beiträge
16.781
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.
 

Kampfwurst Hugo

Lieutenant
Ersteller dieses Themas
Dabei seit
Jan. 2010
Beiträge
554
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.
 

Shagrath

Fleet Admiral
Dabei seit
Mai 2001
Beiträge
16.781
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.
 

Daaron

Fleet Admiral
Dabei seit
Dez. 2011
Beiträge
13.487
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!
 
Top