2015-08-31 21 views
8

mia colonna della tabella contiene i valori come:mysql dove stringa termina con i numeri

id | item 
------------- 
1 | aaaa11a112 
2 | aa1112aa2a 
3 | aa11aa1a11 
4 | aaa2a222aa 

voglio selezionare solo le righe in cui il valore della voce si conclude con i numeri. C'è qualcosa del genere?

select * from table where item like '%number' 
+0

solo lo scorso char o più caratteri? –

+1

vedere questo: http: //stackoverflow.com/questions/12911526/any-way-to-select-from-mysql-table-where-a-field-ends-in-certain-character-numbe –

risposta

14

È possibile utilizzare REGEXP e classi di caratteri

select * from table where item REGEXP '[[:digit:]]$' 

DEMO

Spiegazione:

[[:digit:]] >> Match digit characters 
$   >> Match at the end of the string 

W in un'espressione parentesi (scritta usando [e]), [: character_class:] rappresenta una classe di caratteri che corrisponde a tutti i caratteri appartenenti a quella classe.


Nota a margine:

Altre classi di personaggi mysql utile da utilizzare con REGEXP, preso dai documentation:

Character Class Name Meaning 
alnum     Alphanumeric characters 
alpha     Alphabetic characters 
blank     Whitespace characters 
cntrl     Control characters 
digit     Digit characters 
graph     Graphic characters 
lower     Lowercase alphabetic characters 
print     Graphic or space characters 
punct     Punctuation characters 
space     Space, tab, newline, and carriage return 
upper     Uppercase alphabetic characters 
xdigit     Hexadecimal digit characters 
+0

Would ''[ 0-9] $ 'funziona anche? –

2

è possibile utilizzare REGEXP

select * from table where RIGHT(item ,1) REGEXP '^-?[0-9]+$'; 
-2

Sì, è possibile utilizzare come per i numeri.

select * from table where item like '%1' 

Ciò funzionerà