一尘不染

具有范围的MySQL LIKE无法正常工作

mysql

我有一个数据库表 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,尽管应该计算包含至少一个字母的所有字段。


阅读 273

收藏
2020-05-17

共1个答案

一尘不染

你写:

似乎这里的范围语法有问题

的确如此。MySQL的LIKE运算符(通常
SQL)不支持范围表示法,仅支持简单的通配符。

尝试使用MySQL的非标准RLIKE(aka
REGEXP),以实现更全面的模式匹配。

2020-05-17