[MySQL] Substring mit Position vom Ende aus

Tim C.

Erfahrenes Mitglied
Hi,

in PHP kann ich zum Beispiel einen Substring bilden, der mir ab der vorletzten Position alles ausliest, der sieht dann meist so aus
PHP:
substr($string,-2)

MySQL frisst das jedoch nicht. Jetzt meine Frage: Kann MySQL das nicht - Startposition vom Stringende her bestimmen, oder nutze ich nur die falsche Syntax? Hatte es probiert mit
Code:
SELECT SUBSTRING(`level`,-2,2) FROM [...]

Geht aber nicht, liefert mir nämlich leere Ergebnisse zurück.

Es funkioniert mit
Code:
SELECT SUBSTRING(  `level` , LENGTH(  `level`  )  - 1, 2  ) 
FROM ...
aber wüsste halt gerne, ob das die einzige Möglichkeit ist ;)
 
Hallo!

Code:
mysql> select Artikelname from artikel limit 2;
+-------------+
| Artikelname |
+-------------+
| Chai        |
| Chang       |
+-------------+
2 rows in set (0.00 sec)

mysql> select SUBSTRING(Artikelname,1,2) from artikel limit 2;
+----------------------------+
| SUBSTRING(Artikelname,1,2) |
+----------------------------+
| Ch                         |
| Ch                         |
+----------------------------+
2 rows in set (0.00 sec)

Bei mir geht das ... ;-)

Gruß Tom
 
Original geschrieben von Thomas Darimont
Hallo!

Code:
mysql> select Artikelname from artikel limit 2;
+-------------+
| Artikelname |
+-------------+
| Chai        |
| Chang       |
+-------------+
2 rows in set (0.00 sec)

mysql> select SUBSTRING(Artikelname,1,2) from artikel limit 2;
+----------------------------+
| SUBSTRING(Artikelname,1,2) |
+----------------------------+
| Ch                         |
| Ch                         |
+----------------------------+
2 rows in set (0.00 sec)


Bei mir geht das ... ;-)

Gruß Tom
Du hast mich missverstanden. Bei der Abfrage müsste einmal "ai" und einmal "ng" rauskommen. Also immer die letzten zwei ;)
 
Jetzt aber:

Code:
mysql> select SUBSTRING(Artikelname,1,2) from artikel limit 2;
+----------------------------+
| SUBSTRING(Artikelname,1,2) |
+----------------------------+
| Ch                         |
| Ch                         |
+----------------------------+
2 rows in set (0.00 sec)

mysql> select Artikelname from artikel limit 2;
+-------------+
| Artikelname |
+-------------+
| Chai        |
| Chang       |
+-------------+
2 rows in set (0.00 sec)

mysql> select SUBSTRING(Artikelname,CHAR_LENGTH(Artikelname)-1,2) from artikel l
imit 2;
+-----------------------------------------------------+
| SUBSTRING(Artikelname,CHAR_LENGTH(Artikelname)-1,2) |
+-----------------------------------------------------+
| ai                                                  |
| ng                                                  |
+-----------------------------------------------------+
2 rows in set (0.00 sec)

mysql>

Gruß Tom
 
Hi,
mir fallen spontan folgende Möglichkeiten ein:

Für die letzten 2 Zeichen:
Code:
SELECT RIGHT('123456789', 2) -> '89'

bzw. für die ersten 2 Zeichen ab der 4.-letzten Position:
Code:
SELECT LEFT(RIGHT('123456789', 4), 2) -> '67'

Viele Grüße
 
Zurück