You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL按关键词匹配拆分为多行且保留无匹配记录实现咨询

实现方案

核心逻辑

你当前使用内连接仅返回匹配成功的记录,要保留所有访问日志记录,只需将连接改为左外连接,并将log_cities(访问日志表)作为左表即可,未匹配到城市的日志记录会自动将state字段置为NULL,完全符合需求。

MSSQL 版本实现(当前测试场景可用)

SELECT l.user_id,
       c.state,
       l.visited_log
FROM log_cities l
LEFT JOIN city_lookup c 
  ON l.visited_log LIKE CONCAT('%', c.city, '%')
ORDER BY l.user_id, c.state

执行后输出和你给出的期望结果完全一致,无匹配的user_id=999的记录会正常保留。

BigQuery 版本实现(生产环境可用)

BigQuery语法兼容上述写法,也可以用性能更优的写法适配大数据量场景:

SELECT 
  l.user_id,
  c.state,
  l.visited_log
FROM `你的项目名.你的数据集名.log_cities` l
LEFT JOIN `你的项目名.你的数据集名.city_lookup` c
  ON STRPOS(l.visited_log, c.city) > 0 -- STRPOS返回子串位置,大于0即表示包含对应城市,匹配效率高于LIKE
ORDER BY user_id, state

内容的提问来源于stack exchange,提问作者peppa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 13:06:03