如何仅选择第一位数字为0到9之间的数字的行


How can I select rows only where first digit is a number from 0 to 9?

据我所知,我可以做一些事情,比如:

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

有没有一种方法可以用正则表达式或类似的东西来实现这一点:

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

编辑:该字段不是数字字段,可以是"1个人"、"211派"等。

试试这个

SELECT * 
FROM BadlyDesignedTable 
WHERE AnswerColumn RLIKE '^[0-9]+'

我想知道是否有可能在30秒内在谷歌上找到regex。

SELECT * FROM table WHERE field REGEXP '^[0-9]' 
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(='[:digital:]]'(在我的一个类似查询中尝试过这个,它很有效。

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

如果你有MSSQL,你可以使用

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

一个没有正则表达式的简单表达式:

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

between子句中的引号很重要!