Подтвердить что ты не робот

Выбирать строки, где первый символ не является буквенно-цифровым

Я добавляю несколько новых функций к небольшому проекту, над которым я работаю, и один из них - это альфа-разбивка, которая выглядит как

# 0-9 A B C D E... X Y Z

Я могу легко получить элементы по их первой букве, используя что-то вроде

SELECT * FROM ... WHERE name LIKE 'A%' ...

Группировка всего, что начинается с числа, и все остальные символы немного сложнее, я предполагаю, что ему придется использовать MySQL REGEXP.

Чтобы быть ясным, мне нужна помощь в создании двух запросов, которые будут извлекать все строки, где

  • первый символ столбца является числовым
  • первый символ столбца не является буквенно-цифровым
4b9b3361

Ответ 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.