【问题标题】:Return substring up to first digit返回子字符串直到第一个数字
【发布时间】:2011-09-29 13:20:16
【问题描述】:

我正在尝试按具有模式[: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 是可能的,但需要停机并且尚未完成,因为到目前为止还没有必要。

【问题讨论】:

标签: mysql sql select substring


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

【讨论】:

    猜你喜欢
    • 2020-02-02
    • 1970-01-01
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 2020-06-02
    • 1970-01-01
    • 2013-10-02
    • 2014-01-04
    相关资源
    最近更新 更多