如何仅在第一个数字是从0到9的数字的位置选择行?

时间:2013-03-15 20:52:58

标签: php mysql

据我所知,我可以做类似的事情:

"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馅饼”等等。

5 个答案:

答案 0 :(得分:7)

试试这个

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

我想知道是否有可能将regex放在哪里,在30秒内在google上找到它。

答案 1 :(得分:2)

SELECT * FROM table WHERE field REGEXP '^[0-9]' 

答案 2 :(得分: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:]]') 我在类似的查询中尝试了这一点,并且有效。

答案 3 :(得分: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

答案 4 :(得分:0)

没有正则表达式的简单:

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

between子句中的引号很重要!