将子字符串返回到第一个数字

时间:2011-09-29 13:20:17

标签: mysql sql select substring

我正在尝试通过子字符串具有模式[: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是可能的,但需要停机时间,但尚未完成,因为到目前为止还没有必要。

1 个答案:

答案 0 :(得分:0)

SELECT
    LEFT(postcode, IF(postcode REGEXP '^.[[:digit:]]', 1, 2)) AS area,
    COUNT(*) AS num
FROM addresses
GROUP BY area