我有一个数据库表 mytable ,它的列 名称 为Varchar格式,列 日期 为Datetime值。我想用按日期分组的某些参数来计算名称。这是我的工作:
SELECT CAST(t.date AS DATE) AS 'date', COUNT(*) AS total, SUM(LENGTH(LTRIM(RTRIM(t.name))) > 4 AND (LOWER(t.name) LIKE '%[a-z]%')) AS 'n' FROM mytable t GROUP BY CAST(t.date AS DATE)
似乎这里的范围语法有问题,如果我这样做的LIKE 'a%'话,它确实可以正确计数以’a’开头的所有字段。但是,上面的查询为n返回0,尽管应该计算包含至少一个字母的所有字段。
LIKE 'a%'
你写:
似乎这里的范围语法有问题
的确如此。MySQL的LIKE运算符(通常是 SQL)不支持范围表示法,仅支持简单的通配符。
尝试使用MySQL的非标准RLIKE(aka REGEXP),以实现更全面的模式匹配。