coarsy2
September 17, 2013, 2:24pm
1
Hi zusammen,
ich möchte innerhalb einer Artikelnummer einen Wert via eines SQL Selects ausfindig machen.
Gesucht werden soll der Part innerhalb einer Artikelnummer, welcher nach den ersten zwei Stellen kommt und bspw. 5 Stellen lang ist:
01234566541
Es soll gefunden werden:
23456
Ein Like geht natürlich nicht, da dann eventuell zuviele Artikel gefunden werden…
Jemand eine Idee, ob das mit purem SQL überhaupt funktioniert? Oder muss ich mit einer Zwischenergebnismenge arbeiten?
coarsy2
September 17, 2013, 2:26pm
2
Eventuell das hier? LOCATE(substr,str), LOCATE(substr,str,pos)
tarkka
September 17, 2013, 2:26pm
3
Geht es mit %23456% nicht?
tarkka
September 17, 2013, 2:40pm
5
Hätte ich als nächstes vorgeschlagen …
coarsy2
September 17, 2013, 2:43pm
6
Mit %23456% geht es nicht, da ja davor und danach ebenfalls die Zahlen gefunden werden können.
[QUOTE=coarsy;131843]Mit %23456% geht es nicht, da ja davor und danach ebenfalls die Zahlen gefunden werden können.[/QUOTE]
Du kannst auch
... like '__23456%'
verwenden (zwei Unterstriche am Anfang = zwei beliebige Zeichen)
coarsy2
September 17, 2013, 6:39pm
8
Das geht ebenfalls nicht, da ich genau in einer Stringkette suchen muss, die an einer bestimmten Stelle beginnt und auch wieder aufhört, bzw. eine immer gleiche Anzahl an Zeichen lang ist.
dann so:
… like ‘23456 _’
Der Unterstrich steht für genau ein beliebiges Zeichen
‘0123456789’ liefert 1
’xx23456789’ liefert 1
’123456789’ liefert 0
’012345678’ liefert 0
coarsy2
September 17, 2013, 6:55pm
10
Bringt mir leider auch nix, da ich ja keine beliebigen Zeichen vorher oder nachher habe möchte, sondern eben genau die Zeichenkette. Oben habe ich die Lösung ja schon geposted Ich danke Dir trotzdem.
Regular Expressions in der WHERE Klausel wären auch noch ein Weg oder?
http://dev.mysql.com/doc/refman/5.1-olh/de/regexp.html
Ps.: Ich hätte meiner Frau deinen Shop nie zeigen dürfen :DDD