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

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

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

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

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

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

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

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

1 Ответ

36 голосов
/ 27 июня 2009

Первый символ числовой:

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 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...