MySQL Выбор столбца до номера

В основном я хочу выбрать из столбца, пока в поле не будет числа. Например, у меня есть данные почтового индекса, которые выглядят как

+----------+ | postcode | +----------+ | RG41 5LY | | RG7 6LO | | SW 1AA | | M 3BV | +----------+ 

Я хочу иметь возможность просто получить первые буквы, например, RG, SW, M. Поэтому выберите данные, пока не достигнет символа, отличного от альфы. Я хочу сделать это, чтобы я мог сгруппировать его по первым альфа-символам

В настоящее время мой запрос выглядит так:

  SELECT COUNT(*) as count, postcodeArea FROM Client c (SELECT UPPER((SUBSTRING_INDEX(postcode, ' ', 1))) AS postcodeArea 

Он группируется на основе столбца до первого пространства

Благодаря!

Предположим, что у вас есть до 3 ведущих букв в ваших почтовых кодах, вы можете попробовать следующее:

 SELECT COUNT(*) tot, pcode FROM ( SELECT CASE WHEN postcodearea REGEXP '^[AZ][AZ][AZ].*' THEN SUBSTRING(postcodearea,1,3) WHEN postcodearea REGEXP '^[AZ][AZ].*' THEN SUBSTRING(postcodearea,1,2) WHEN postcodearea REGEXP '^[AZ].*' THEN SUBSTRING(postcodearea,1,1) ELSE '' END AS pcode FROM client ) e GROUP BY pcode 

использовать Regex в Mysql

 SELECT COUNT(*) as count, postcodeArea REGEXP /^[Az]+$/ as postarea_code FROM Client c 

Я провел некоторое исследование и обнаружил, что не существует способа применить регулярное выражение на SUBSTR_INDEX (). Только способ использования регулярного выражения в запросе SELECT похож на SELECT postcode REGEXP '[^A-Za-z]' as postarea_code FROM client . Однако он возвращает с 0 или 1, чтобы показать соответствие строки. В вашем случае он вернет 1,1,1,1, потому что все строки содержат неалфавитный символ. И это не имеет смысла в вашем случае.
Не могли бы вы подробнее рассказать о том, что вы хотите сделать? Как сказал @ san1646, почему бы вам не использовать ORDER ? Вы хотите, чтобы вы группировали RG41 5LY и RG7 6LO вместе буквой R? В этом случае вы можете использовать LEFT(postcode,1) чтобы получить первую букву.