MySQL String Suche

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?

Eventuell das hier? LOCATE(substr,str), LOCATE(substr,str,pos)

Geht es mit %23456% nicht?

So, das hier ist es:


MID(str,pos,len)

oder


SUBSTRING(str,pos,len)

Hätte ich als nächstes vorgeschlagen … :wink:

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)

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

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 :slight_smile: 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