5

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

"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 People”、“211 Pies”等。

4

5 回答 5

7

试试这个

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

我想知道是否有可能在哪里进行正则表达式,在 30 秒内在谷歌上找到它。

于 2013-03-15T20:56:28.270 回答
2
SELECT * FROM table WHERE field REGEXP '^[0-9]' 
于 2013-03-15T20:59:24.760 回答
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

编辑: Select * From my_table Where (SUBSTR(my_field,1,1) = '[[:digit:]]') 在我的类似查询中试过这个,它可以工作。

于 2013-03-15T20:59:26.563 回答
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
于 2013-03-15T20:54:49.757 回答
0

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

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

between 子句中的引号很重要!

于 2013-03-15T21:27:06.327 回答