我有一个数据库表 mytable,其中包含 Varchar 格式的 name 列和包含日期时间值的 date 列。我想计算具有按日期分组的某些参数的名称。这是我所做的:
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,尽管应该计算包含至少一个字母的所有字段。
最佳答案
你写:
It seems that there's something wrong with range syntax here
确实如此。 MySQL 的 LIKE 运算符(以及一般的 SQL)does not support range notation ,只是简单的通配符。
尝试MySQL的非标准RLIKE (又名 REGEXP),用于功能更齐全的模式匹配。
关于MySQL LIKE 带范围不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54693109/