2013-03-15 4 views
5

最初の桁が0から9までの数字の場合のみ、行を選択できますか?私の知る限り、私はのような何かを行うことができます知っているよう

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

はEDIT:フィールドがない

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

は、このような正規表現か何かでこれを達成する方法はありますそれは "1人" "211パイ"などのようにすることができます。

+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]+' 
どこにregexですることも可能だった場合、私は30にGoogleで見つけた、それを思っていた

秒。

+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はわかりませんが、数字はNOTです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

EDIT:my_tableにSELECT * FROM(SUBSTR(my_field、1,1)= '[[:桁:]]') は私の類似したクエリでこれを試みたが、それが動作します。

0

正規表現のない単純な1:

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

間の句の引用符が重要です!

関連する問題