【问题标题】:Joining Tables based off LIKE words基于 LIKE 词连接表
【发布时间】:2022-01-20 17:58:21
【问题描述】:

我有两张列出公司的表格。表 a 中有 1000 家公司,但表 b 中只有大约 150 家。不幸的是,每个表格中的公司写法都有些不同。例如,表 a 可能包含“Walmart, INC.”。而表 b 可能只有“沃尔玛”。有没有办法将这两个表从公司名称中的第一个单词连接起来?

【问题讨论】:

  • 您可以加入 LIKE 表达式,尽管查询可能会运行缓慢。你都尝试了些什么?此外,应该表结构(至少具有关键字段)。这是一次性更新还是持续查询?
  • 请向minimal reproducible example 提供样本数据、预期结果和您的尝试。

标签: sql sql-server tsql


【解决方案1】:

试试

SELECT *
FROM A
LEFT JOIN B ON A.company_name LIKE CONCAT('%', B.company_name, '%');

【讨论】:

  • 不,如果表 B 有“Walmart, INC.”,这将不起作用。和表 A 有“沃尔玛”
  • 同意@Sparky,可能会在join子句中添加or来反转,所以它可以捕捉到这两种情况。
【解决方案2】:

LEFTCHARINDEX 将完成这项工作,如果每个公司用以下字符','分隔

SELECT *
FROM A
LEFT JOIN B ON B.company_name = LEFT(A.company_name, CHARINDEX(',', A.company_name) - 1);

【讨论】:

    猜你喜欢
    • 2021-08-23
    • 1970-01-01
    • 2015-04-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多