2012-04-13 18 views
28

Ich muss die letzten 5 Zahlen mit mysql erhalten.Die letzten 5 Zeichen der Zeichenfolge mit MySQL-Abfrage erhalten

Meine Werte sind wie YOT-A78514, LOP-C4521 ...

ich erst im letzten fünf Zeichen bekommen haben. Wie kann ich dies in der Abfrage tun?

+0

sind Sie uns ing php? –

+4

@t q: warum ist es wichtig? – zerkms

+0

Warum schaust du dir die Antwort hier nicht an? https://stackoverflow.com/questions/12504985/how-to-take-last-four-characters-from-a-varchar –

Antwort

74

Sie können dies mit RIGHT(str,len) Funktion tun. Gibt die äußersten rechten len Zeichen aus der Zeichenfolge str,

wie unten:

SELECT RIGHT(columnname,5) as yourvalue FROM tablename 
+3

Ich kann mich nicht stoppen, +1 hier zu tun. –

4

Right ist eine gute Wahl, aber sie auch substring wie this-

SELECT Substring(columnname,-5) as value FROM table_name 
1
SELECT row_id 
    FROM column_name 
WHERE column_value LIKE '%12345'; 
verwenden können

Dies wird die "row_id" zurückgeben, wenn "12345" als tailing s gefunden wird uffix des "column_value" innerhalb des "column_name".

+0

Dies ist eine gute Antwort für diejenigen, die den Filter innerhalb der WHERE-Klausel anwenden möchten. – Kvvaradha

1

Und wenn Sie nach einer Figur eine dinamic Anzahl der richtigen Zeichen zu erhalten:

SELECT TRIM( 
    RIGHT(
     database.table.field, 
     (LENGTH(database.table.field) - LOCATE('-',database.table.field)) 
    ) 
) 
FROM database.table; 
10

„Right“ -Funktion ist der Weg zu, den Teils Verwendung kann zu einem Problem führen, die nicht so einfach ist, zu bemerken: Teilzeichenfolge natürlich

mysql> select right('hello', 6); 
+-------------------+ 
| right('hello', 6) | 
+-------------------+ 
| hello    | 
+-------------------+ 
1 row in set (0.00 sec) 

mysql> select substring('hello', -6); 
+------------------------+ 
| substring('hello', -6) | 
+------------------------+ 
|      | 
+------------------------+ 
1 row in set (0.00 sec) 

Aber wenn Sie nicht versuchen, vorbei an den Anfang der Zeichenfolge zu gehen, dann funktioniert:

mysql> select substring('hello', -5); 
+------------------------+ 
| substring('hello', -5) | 
+------------------------+ 
| hello     | 
+------------------------+ 
1 row in set (0.00 sec)