Я пытаюсь сгруппировать строки по полю, которое имеет шаблон [:alpha:][:digit:].*
или [:alpha:][:alpha:][:digit:].*
по подстроке до, но исключая цифру. то есть возвращенная подстрока будет иметь одну букву или две.
Я думаю что-то вроде:
SELECT
LEFT(postcode,IF(ISDIGIT(postcode,2),1,2)) AS area,
COUNT(*) AS num
FROM addresses
GROUP BY
LEFT(postcode,IF(ISDIGIT(postcode,2),1,2))
За исключением, конечно, функции ISDIGIT()
нет.
Я также думал о чем-то похожем на LEFT(postcode,POSITION_REGEX("\d" IN postcode))
, но, очевидно, этого тоже не существует: - /
Сервер базы данных работает под управлением MySQL 4.1.24
Обновление до версии 5.0 возможно, но потребует простоя и еще не было сделано, поскольку пока не было необходимости.