=JOIN(", ",FILTER(REGEXEXTRACT(SPLIT(C2," "),"^(DA|DZ|MP)\d{10}$"))) 在D2格子里输入这个公式为什么无效,C2格子里的内容是DZ2305160048 BL.pdf,应该计算出来DZ2305160048才对
时间: 2023-07-19 14:23:46 浏览: 43
这个公式可能无效是因为您在使用 SPLIT 函数时没有指定分隔符。如果您的内容中只包含一个字符串,没有空格分隔符,那么 SPLIT 函数就不会产生多个子字符串,而是直接返回原始字符串,导致无法匹配到符合要求的内容。
要修复这个问题,可以使用以下公式:
```
=IFERROR(REGEXEXTRACT(D2,"(DA|DZ|MP)\d{10}"),"")
```
这个公式会在 D2 格子里查找内容,如果内容中包含 DA、DZ 或 MP 中的任意一个特殊字符,并且这些字符后面有 10 位数字字符,就会把这个特殊字符以及它后面的 10 位数字显示出来。如果没有符合条件的内容,公式会返回空字符串。
对于您提供的样例 "DZ2305160048 BL.pdf",这个公式会返回 "DZ2305160048",符合您的预期。
相关问题
MySQL 计算下表的用户平均停留时长: || userid || actionType || timestamp || =============================== || a || login || 1234567891 || || a || logout || 1234567892 || || b || login || 1234567893 || || a || login || 1234567894 || || b || logout || 1234567895 || || a || logout || 1234567896 |
你可以使用以下的SQL语句来计算用户的平均停留时长:
```sql
SELECT userid, AVG(logout_time - login_time) AS avg_stay_time
FROM (
SELECT userid, timestamp AS login_time
FROM your_table
WHERE actionType = 'login'
) AS logins
JOIN (
SELECT userid, timestamp AS logout_time
FROM your_table
WHERE actionType = 'logout'
) AS logouts ON logins.userid = logouts.userid
GROUP BY userid;
```
请将`your_table`替换为你的表名。这个查询首先会筛选出所有的登录记录和退出记录,然后通过内连接将它们匹配起来,并计算每个用户的平均停留时长。
题目一: sql: 计算下表的用户平均停留时长: || userid || actionType || timestamp || =============================== || a || login || 1234567891 || || a || logout || 1234567892 || || b || login || 1234567893 || || a || login || 1234567894 || || b || logout || 1234567895 || || a || logout || 1234567896 || 题目二: sql: 计算用户每人每天的最后一次登录微信的停留时长: the_date,uid,timestamp,stay_time 例子: 20210329,user123,1617012000,600
题目一:
可以使用以下 SQL 查询语句计算用户平均停留时长:
```sql
SELECT userid, AVG(stay_time) AS avg_stay_time
FROM (
SELECT userid, TIMESTAMPDIFF(SECOND, MIN(timestamp), MAX(timestamp)) AS stay_time
FROM your_table
WHERE actionType IN ('login', 'logout')
GROUP BY userid
) t
GROUP BY userid;
```
请将 "your_table" 替换为你的表名。
题目二:
可以使用以下 SQL 查询语句计算用户每人每天的最后一次登录微信的停留时长:
```sql
SELECT DATE(FROM_UNIXTIME(timestamp)) AS the_date, uid, stay_time
FROM (
SELECT uid, MAX(timestamp) AS max_timestamp
FROM your_table
WHERE stay_time > 0
GROUP BY uid, DATE(FROM_UNIXTIME(timestamp))
) t
JOIN your_table ON t.uid = your_table.uid AND t.max_timestamp = your_table.timestamp;
```
请将 "your_table" 替换为你的表名。