2012-04-13 15 views
28

Muszę zdobyć ostatnie 5 cyfr za pomocą mysql.Pierwsze 5 znaków ciągu z zapytaniem mysql

moje wartości są jak YOT-A78514, LOP-C4521 ...

Muszę tylko ostatnie pięć char. Jak mogę to zrobić w zapytaniu?

+0

jesteś z nami ing php? –

+4

@t q: dlaczego to ma znaczenie? – zerkms

+0

Dlaczego nie patrzysz tutaj na odpowiedź? https://stackoverflow.com/questions/12504985/how-to-take-last-fa--characters-from-a-varchar –

Odpowiedz

74

Możesz to zrobić za pomocą funkcji RIGHT(str,len). Zwraca n ostatnich len znaków z łańcucha str,

jak poniżej:

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

Nie mogę się powstrzymać od zrobienia +1 tutaj. –

4

Right jest dobrym wyborem, ale można też użyć substring jak to-

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

Spowoduje to wyświetlenie "row_id", gdy zostanie znaleziony ciąg "12345" Uffix "column_value" w "column_name".

+0

To jest dobra odpowiedź dla tych, którzy chcą zastosować filtr w klauzuli WHERE. – Kvvaradha

1

A jeśli chcesz uzyskać numer DINAMIC z właściwych znaków po znaku:

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

„Right” -function jest sposobem, za pomocą podciąg może prowadzić do problemu, który nie jest tak łatwo zauważyć:

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) 

Ale jeśli nie starają się przejść obok początek napisu, następnie podciąg oczywiście działa dobrze:

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