Выбирать строки, где первый символ не является буквенно-цифровым
Я добавляю несколько новых функций к небольшому проекту, над которым я работаю, и один из них - это альфа-разбивка, которая выглядит как
# 0-9 A B C D E... X Y Z
Я могу легко получить элементы по их первой букве, используя что-то вроде
SELECT * FROM ... WHERE name LIKE 'A%' ...
Группировка всего, что начинается с числа, и все остальные символы немного сложнее, я предполагаю, что ему придется использовать MySQL REGEXP.
Чтобы быть ясным, мне нужна помощь в создании двух запросов, которые будут извлекать все строки, где
- первый символ столбца является числовым
- первый символ столбца не является буквенно-цифровым
Ответы
Ответ 1
Первый символ является числовым:
SELECT * FROM ... WHERE name REGEXP '^[0-9]';
Первый символ не является буквенно-цифровым:
SELECT * FROM ... WHERE name REGEXP '^[^0-9A-Za-z]';
(Обратите внимание, что это отличается от NOT REGEXP ^[0-9A-Za-z]
, потому что вы, похоже, хотите только совместить, когда на самом деле есть первый символ.)
Возможно, вы можете заменить [^[:alnum:]]
на [^0-9A-Za-z]
, но я его не тестировал. Вы можете, конечно, заменить [[:digit:]]
на [0-9]
, но это больше.: -)
Также см. Справочник по MySQL REGEXP.