Выберите значения, начинающиеся с числа У меня есть таблица со столбцом, содержащим данные, которые начинаются с чисел тоже, на MySQL Как выбрать строки, начинающиеся только с числа? Ответ 1 SELECT * FROM YourTable WHERE YourColumn regexp '^[0-9]+' Ответ 2 Вы можете сделать: 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) Ответ 3 и SELECT * FROM YourTable WHERE YourColumn LIKE '[0-9]%'; Ответ 4 Еще один способ: WHERE LEFT(columnName,1) IN ('0','1','2','3','4','5','6','7','8','9') и с общими наборами и сортировками, это будет работать и использовать индекс в столбце: WHERE columnName >= '0' AND columnName < ':' Ответ 5 SELECT * FROM TABLE T WHERE T.COLUMNNAME REGEXP '^[0-9]'; Другой ответ: SELECT * FROM TABLE T WHERE T.COLUMNNAME RLIKE '^[0-9]';
Ответ 2 Вы можете сделать: 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)
Ответ 4 Еще один способ: WHERE LEFT(columnName,1) IN ('0','1','2','3','4','5','6','7','8','9') и с общими наборами и сортировками, это будет работать и использовать индекс в столбце: WHERE columnName >= '0' AND columnName < ':'
Ответ 5 SELECT * FROM TABLE T WHERE T.COLUMNNAME REGEXP '^[0-9]'; Другой ответ: SELECT * FROM TABLE T WHERE T.COLUMNNAME RLIKE '^[0-9]';