2013-03-15 2 views
5

지금까지 내가 같은 것을 할 수 알고 :첫 번째 숫자가 0에서 9까지의 숫자 인 행만 어떻게 선택할 수 있습니까?

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

편집 : 필드가되지

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

을 같은 정규 표현식 또는 무언가에이를 수있는 방법이 있나요 숫자이며 "1 People", "211 Pies"등이 될 수 있습니다.

+1

MySQL은'RLIKE' 옵션을 지원 http://dev.mysql.com/doc/refman/5.0/en/regexp.html#operator_regexp – Kyle

답변

7

사용할 수있는이

SELECT * 
FROM BadlyDesignedTable 
WHERE AnswerColumn RLIKE '^[0-9]+' 
이 곳에서 정규식 심지어 수 있다면 내가 30 구글에 발견, 그것을 궁금

초.

+1

당신은 정말로'+'가 필요 없지만 아무것도 해치지 않을 것입니다. –

+0

mavili가 설명하는 것처럼 REGEXP 대신 RLIKE를 사용하는 것이 더 좋습니까? – Uuid

+1

@Uuid :'RLIKE'는'REGEXP'의 별칭입니다. http://dev.mysql.com/doc/refman/5.0/en/regexp.html –

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

당신은 MSSQL이있는 경우는 시도

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

하면 현재 DB를하지만, ISNUMERIC되지 않는 모른다 mysql 함수. –

+0

10에서 19 사이의 값을 반환하지 않겠습니까? 그리고 아마도 1을 포함하여 –

+0

사실 이것은 첫 번째 숫자가 1 인 모든 값을 반환합니다. 100, 1000, 13209587203957 등 –

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:]]')) 당신은 당신이 가지고있는 하나로서 많은 문제에 사용할 수있는 기능입니다. 첫 번째 숫자에 대해이를 수행하도록 지시하기 만하면됩니다.

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

편집 : 선택 * MY_TABLE 어디에서 (SUBSTR (my_field, 1,1) = '[[: digit :]]이') 내 유사한 쿼리에서 이것을 시도, 그것은 작동합니다. 정규 표현식없이

0

간단한 하나의

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

따옴표 절 사이는 중요하다!

관련 문제