2015-08-31 13 views
8

My kolumna tabela zawiera wartości takich jak:mysql gdzie kończy się ciąg liczb

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

Chcę wybrać tylko wiersze, w których wartość przedmiotu kończy się liczbami. Czy jest coś takiego?

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

tylko ostatni znak lub wielu znaków? –

+1

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

Odpowiedz

14

Można użyć REGEXP i klasę postaci

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

DEMO

Objaśnienie:

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

W. w wyrażeniu nawiasowym (napisanym przy użyciu [i]), [: character_class:] reprezentuje klasę znaków, która pasuje do wszystkich znaków należących do tej klasy.


Sidenote:

Inne klas postaci mysql osób do korzystania z REGEXP, zaczerpnięte z 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] $ ''również działa? –

2

można użyć REGEXP

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

Tak można użyć jak dla liczb.

select * from table where item like '%1' 

To zadziała

Powiązane problemy