我遇到了同样的问题,但是在用户代理字符串中重复了 iPhone。例如:
Mozilla/5.0+(iPhone;+CPU+iPhone+OS+10_2_1+like+Mac+OS+X)+AppleWebKit/602.4.6+(KHTML,+like+Gecko)+Version/10.0+Mobile/14D27+Safari/602.1
我的解决方案是使用REPLACE_IF_NOT_NULL函数,并利用INDEX_OF如果未找到搜索字符串则返回 null 的事实:
...
case REPLACE_IF_NOT_NULL(INDEX_OF(cs(user-agent),'iPhone'),1) when 1 THEN 'iPhone' else
case REPLACE_IF_NOT_NULL(INDEX_OF(cs(user-agent),'iPad'),1) when 1 THEN 'iPad' else
case REPLACE_IF_NOT_NULL(INDEX_OF(cs(user-agent),'Android'),1) when 1 THEN 'Android' else
...
使用这种格式比在其他示例中看到的使用 strcnt(...) 构造的等效查询慢约 10%,但它解决了 iPhone 问题,我相信通常更健壮。