sql - 您如何确定 A 列是否包含 B 列中的某些内容?
问题描述
与表 B 列 A 相比,我一直试图找出一种从表 A 列 A 中获取信息的方法,例如:
TableA
Name
abcd_1234_efgh
zxcdde_gets_3214_
jkil_uelso_5555_aseil
uuuu_kkkk_iiii_3333
TableB
ID
1234
3214
5555
3333
我已经尝试从表 A 到表 B 进行 INNER JOIN,然后执行 WHERE TableA.A LIKE TableB.B,但我认为我缺少一个部分来使其工作。
SELECT
a.Name,
b.ID
FROM
TableA a
INNER JOIN
TableB b
ON
a.Name LIKE CAST(b.ID AS STRING)
我想要的结果是:
Name ID
abcd_1234_efgh 1234
zxcdde_gets_3214_ 3214
jkil_uelso_5555_aseil 5555
uuuu_kkkk_iiii_3333 3333
但目前我没有得到任何结果。我相信我遗漏了一些东西,或者可能正在考虑错误的方法来获得所需的结果。任何帮助将不胜感激!
-Maykid
解决方案
你很亲密。我认为这将在 BigQuery 中起作用:
SELECT a.Name, b.ID
FROM TableA a INNER JOIN
TableB b
ON a.Name LIKE CONCAT('%', CAST(b.ID AS STRING), '%');
但你可能真的想要:
SELECT a.Name, b.ID
FROM TableA a CROSS JOIN
UNNEST(SPLIT(a.Name, '_')) namepart JOIN
TableB b
ON namepart = CAST(b.ID AS STRING);
这看起来像是名称的每个部分,并允许 BigQuery 进行等式连接——这应该更具可扩展性。
推荐阅读
- javascript - React.JS 奇怪的错误:按钮随滚动而移动
- python - 从python中的rss提要中提取以关键字/短语开头的句子
- html - UI设计(如何让它看起来很专业)
- excel - FindNext - VBA 代码测试正确,但 Excel 中的公式不起作用
- python-3.x - 从numpy数组中删除元素?
- java - 当我从服务器获取 html 文件或调用任何服务时,响应在 chrome 网络选项卡中包含红点,导致 HTML/JSON 中断
- reactjs - 如何使用 webpack 配置 create-react-app 以及它是如何运行测试的?
- forms - 使用 GlobalKey 进行验证
在 Flutter Stepper 小部件的各个步骤中即使输入正确也会返回 false - c# - Unity 中的持续射速
- angular - 从嵌套组件中获取 url 参数