我有一个表,其中包含一个列,其中包含以数字开头的数据,在MySQL上
如何选择仅以数字开头的行?
答案 0 :(得分:30)
SELECT * FROM YourTable WHERE YourColumn regexp '^[0-9]+'
答案 1 :(得分:7)
你可以这样做:
SELECT *
FROM MyTable
WHERE MyColumn REGEXP '^[0-9]';
使用的正则表达式为^[0-9]
。
^ - Start anchor, used to ensure the pattern matches start of the string.
[ - Start of character class.
0-9 - Any digit
] - End of character class
实际上,我们正尝试在 以数字 开头的列中选择这些值。
演示:
mysql> select * from tab;
+-------+
| col |
+-------+
| 1foo |
| foo |
| 10foo |
| foo10 |
+-------+
4 rows in set (0.00 sec)
mysql> select * from tab where col regexp '^[0-9]';
+-------+
| col |
+-------+
| 1foo |
| 10foo |
+-------+
2 rows in set (0.00 sec)
答案 2 :(得分:6)
另一种方式:
WHERE LEFT(columnName,1) IN ('0','1','2','3','4','5','6','7','8','9')
使用常见的字符集和排序规则,这将起作用并在列上使用索引:
WHERE columnName >= '0' AND columnName < ':'
答案 3 :(得分:5)
也
SELECT * FROM YourTable
WHERE YourColumn LIKE '[0-9]%';
答案 4 :(得分:2)
SELECT * FROM TABLE T
WHERE T.COLUMNNAME REGEXP '^[0-9]';
另一个答案是:
SELECT * FROM TABLE T
WHERE T.COLUMNNAME RLIKE '^[0-9]';