2013-03-15 5 views
5

Bildiğim kadarıyla ben böyle bir şey yapabilirim bildiği gibi:Satırları yalnızca ilk hanenin 0 ile 9 arasında bir sayı olduğu durumlarda nasıl seçebilirim?

"SELECT * 
FROM my_table 
WHERE my_field LIKE [only first char is 0-9]"?? 

DÜZENLEME:: alanında değil

"SELECT * 
FROM my_table 
WHERE my_field LIKE '0%' 
OR my_field LIKE '1%' 
OR my_field LIKE '2%' "; 

böyle bir düzenli ifade falan bunu başarmak için bir yol var mı sayısal ve "1 People", "211 Pies" ve benzeri şeyler olabilir.

+1

MySQL, "RLIKE" seçeneğini destekler http://dev.mysql.com/doc/refman/5.0/en/regexp.html#operator_regexp – Kyle

cevap

7

kullanabileceğiniz bu

SELECT * 
FROM BadlyDesignedTable 
WHERE AnswerColumn RLIKE '^[0-9]+' 
nereye içinde regex bile mümkün olmadığını 30'da google bulundu onu merak ediyorum

saniye.

+1

Gerçekten '+' ye ihtiyacınız yok, ama hiçbir şey incitmeyeceksin –

+0

REGXP yerine RLIE kullanmak daha iyi midir? – Uuid

+1

@Uuid: 'RLIKE',' REGEXP' bir takma addır. http://dev.mysql.com/doc/refman/5.0/en/regexp.html –

0
SELECT * 
FROM my_table 
WHERE left(my_field,1) REGEXP '^[0-9]+'; 

Eğer MSSQL varsa deneyin

SELECT * 
FROM my_table 
WHERE isNumeric(left(my_field,1)) = 1 
+0

hangi DB'yi çalıştırdığınızı bilmezsiniz, ancak isnumeric DEĞİLDİR. mysql işlevi. –

+0

Bu, 10 ile 19 arasında bir değer döndürmez miydi? ve 1 dahil 1 Sanırım –

+0

Aslında bu, ilk sayının 1, 100, 1000, 13209587203957, vb. –

2
SELECT * FROM table WHERE field REGEXP '^[0-9]' 
1
Select * From my_table Where (REGEXP_LIKE(my_field, '[[:digit:]]%')) 

(REGEXP_LIKE(Source_String, '[[:character class:]]')) böyle sahip biri olarak sayısız sorunlar için kullanabileceğiniz bir fonksiyondur. İlk rakam için bunu yapmak için bunu kullanın.

http://docs.oracle.com/cd/B14117_01/server.101/b10759/conditions018.htm

DÜZENLEME: Seç * my_table itibaren Nerede (SUBSTR (my_field, 1,1) = '[[: digit:]]') benim de benzer bir sorguda bu çalıştı ve çalışıyor. Düzenli ifadeler olmadan

0

Basit bir yer:

SELECT *, SUBSTR(my_field, 1, 1) AS mf FROM my_table HAVING mf BETWEEN '0' AND '9'; 

tırnak maddesi arasındaki önemlidir!

İlgili konular