如何通过部分匹配来联接两个表

用户名

我有两个表,其中包含以下数据:

TableA.name
R4.23-Core-2
R4.23-Core-2
LA#213 CGHPBXsw01 127.213 0024-737e-e341
LA#252 CGHRack1sw01 127.252 0022-57ab-d781
SOC-01A-SW01
to - R4-DISTR-9512
to-R2-DISTR-5900-1
to-R3.25-EDGE

TableB.caption
R4.23-Core-2.ehd.ca
R4.23-Core-2.nhd.ca
CGHPBXsw01
CGHRack1sw01
SOC-01A-SW01
R4-DISTR-9512
R2-DISTR-5900-1.phsnc.
R3.25-EDGE.phsne.edjc.ca

我试过使用以下join语句,但它似乎不适用于带有的任何行。在里面。

dbo.TableA.Name 
INNER JOIN dbo.TableB.Caption 
  ON dbo.TableA.Name LIKE '%' + dbo.TableB.Caption + '%'

我也尝试使用替换功能,该功能可以正常工作,但替换中包含太多变体。

我可以尝试使用RIGHT或LEFT函数对数据进行规范化,但是对于没有'。'的行。它会抛出一个错误。而且我不知道如何跳过没有“。”的行。

连接这两个表的最有效方法是什么?

哈特公司

在您的示例中的某些情况下,标题较长,而在其他情况下,名称较长,如果您想加入标题中包含标题或标题中包含标题的任何值,则可以使用:

dbo.TableA.Name 
INNER JOIN dbo.TableB.Caption 
   ON   dbo.TableA.Name LIKE '%' + dbo.TableB.Caption + '%'
     OR dbo.TableB.Caption LIKE '%' + dbo.TableA.Name + '%'

这可以解释为什么您的查询无法按预期工作。

作为最有效的方法,您希望在表中有一个标准化字段,可以JOIN通过等式使用它(例如a.col1 = b.col1),这样就需要去除每个领域的心脏,使它值得加入。

更新:如果重要的部分是第一个句点之前的所有内容,那么您要使用LEFT()and CHARINDEX()(和一个CASE语句,因为并非所有字符串都包含句点)的组合:

SELECT NewField = CASE WHEN CHARINDEX('.',Name) > 0 THEN  LEFT(Name,CHARINDEX('.',Name)-1) 
                       ELSE Name
                  END
FROM YourTable  

您也可以在上面使用JOIN

dbo.TableA.Name 
INNER JOIN dbo.TableB.Caption 
  ON CASE WHEN CHARINDEX('.',TableA.Name) > 0 THEN  LEFT(TableA.Name,CHARINDEX('.',TableA.Name)-1) 
                           ELSE TableA.Name
                      END
    = CASE WHEN CHARINDEX('.',TableB.Caption) > 0 THEN  LEFT(TableB.Caption,CHARINDEX('.',TableB.Caption)-1) 
                           ELSE TableB.Caption
                      END

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过联接两个表来计数

来自分类Dev

如何通过使用第一个相关日期来联接两个表?

来自分类Dev

如何通过BigQuery中的相关匹配键来连接两个表?

来自分类Dev

如何通过联接从两个表中获取值?

来自分类Dev

如何通过匹配具有不规则数目的列的列来联接两个文件?

来自分类Dev

通过联接两个表来创建自定义列

来自分类Dev

通过首先找到最大行来联接两个表

来自分类Dev

如何外部联接两个表?

来自分类Dev

SQLite如何联接两个表

来自分类Dev

如何间接联接两个表

来自分类Dev

如何外部联接两个表?

来自分类Dev

如何联接两个mysql表

来自分类Dev

如何在PostgreSQL中联接两个表来更新一个

来自分类Dev

直接或通过联结表联接两个SQL表

来自分类Dev

如何基于两个工作表包含的数据来联接它们

来自分类Dev

将两个表与不匹配的行联接

来自分类Dev

在匹配的ID上联接两个表?

来自分类Dev

SQL-如何联接两个表,但只有某些特定条件完全匹配?

来自分类Dev

如何在SQL中列不匹配的情况下联接两个表

来自分类Dev

如何在两个字段上联接表并从两个匹配结果中检索单个列?

来自分类Dev

如何通过第三个“映射”表匹配联接中的两列

来自分类Dev

如何通过安排两个表中的日期来检索两个表中的数据

来自分类Dev

如何通过使用内部联接从codeigniter中的两个表中获取数据

来自分类Dev

如何在SQL中通过多列联接两个表?

来自分类Dev

如何通过R中的值(不加入)来匹配两个df?

来自分类Dev

如何通过匹配键及其值来组合两个集合

来自分类Dev

通过两个不同的列联接两个表,输入和顺序

来自分类Dev

sequelize.js查询通过联接表上的where子句联接两个表

来自分类Dev

sequelize.js查询通过联接表上的where子句联接两个表

Related 相关文章

  1. 1

    如何通过联接两个表来计数

  2. 2

    如何通过使用第一个相关日期来联接两个表?

  3. 3

    如何通过BigQuery中的相关匹配键来连接两个表?

  4. 4

    如何通过联接从两个表中获取值?

  5. 5

    如何通过匹配具有不规则数目的列的列来联接两个文件?

  6. 6

    通过联接两个表来创建自定义列

  7. 7

    通过首先找到最大行来联接两个表

  8. 8

    如何外部联接两个表?

  9. 9

    SQLite如何联接两个表

  10. 10

    如何间接联接两个表

  11. 11

    如何外部联接两个表?

  12. 12

    如何联接两个mysql表

  13. 13

    如何在PostgreSQL中联接两个表来更新一个

  14. 14

    直接或通过联结表联接两个SQL表

  15. 15

    如何基于两个工作表包含的数据来联接它们

  16. 16

    将两个表与不匹配的行联接

  17. 17

    在匹配的ID上联接两个表?

  18. 18

    SQL-如何联接两个表,但只有某些特定条件完全匹配?

  19. 19

    如何在SQL中列不匹配的情况下联接两个表

  20. 20

    如何在两个字段上联接表并从两个匹配结果中检索单个列?

  21. 21

    如何通过第三个“映射”表匹配联接中的两列

  22. 22

    如何通过安排两个表中的日期来检索两个表中的数据

  23. 23

    如何通过使用内部联接从codeigniter中的两个表中获取数据

  24. 24

    如何在SQL中通过多列联接两个表?

  25. 25

    如何通过R中的值(不加入)来匹配两个df?

  26. 26

    如何通过匹配键及其值来组合两个集合

  27. 27

    通过两个不同的列联接两个表,输入和顺序

  28. 28

    sequelize.js查询通过联接表上的where子句联接两个表

  29. 29

    sequelize.js查询通过联接表上的where子句联接两个表

热门标签

归档