2013-06-04 16 views
6

Desidero utilizzare l'operatore LIKE per confrontare i valori possibili in una colonna.carattere jolly per singola cifra mysql

Se il valore inizia con "CU" seguito da una cifra (ad esempio "3") seguita da qualsiasi altra cosa, desidero restituirla. Sembra che ci sia solo un carattere jolly per ogni singolo carattere usando il carattere di sottolineatura, tuttavia devo accertarmi che si tratti di una cifra e non di una z. Ho provato questi inutilmente:

select name from table1 where name like 'CU[0-9]%' 
select name from table1 where name like 'CU#%' 

Preferibilmente questo potrebbe essere case sensitive cioè se cu o Cu o cU allora questo non sarebbe una corrispondenza.

risposta

9

È necessario utilizzare regexp:

select name 
from table1 
where name regexp binary '^CU[0-9]' 

La documentazione per regexp è here.

EDIT: binary è necessario per garantire la corrispondenza

+0

Lo accetterò come risposta se la mia modifica passa attraverso – pedromillers

+0

@pedromillers. . . Qual è stata la modifica? –

+0

L'ho fatto di nuovo. Non sono sicuro del motivo per cui è stato cancellato. – pedromillers

1

Hai provato con:

select name from table where name between 'CU0' and 'CU9' 
+1

questo è vicino ma non corrisponde a qualcosa come "CU9AX". –

3

L'like operator hanno solo le % e _ jolly in MySQL tra maiuscole e minuscole, ma si può usare un'espressione regolare con la rlike operator:

select name from table1 where name rlike '^CU[0-9]' 
1

È possibile utilizzare l'operatore REGEXP, vedere http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

quindi la vostra richiesta sarebbe:

select name from table where name regexp 'CU[0-9].*'; 
+0

smuk - poiché la regexp non si ancora all'inizio della stringa con il segno di omissione ('^') corrisponderà anche a valori come 'ABCU1' e' xxxxxxxCU3yyyy'. –

+0

Ed è corretto, supponendo che intendesse "senza" e non "con". Aggiungere '^' all'inizio è ciò di cui ho bisogno. '. *' Non è stato richiesto – pedromillers

Problemi correlati