1

我正在加入 2 张桌子,例如:

    RIGHT JOIN Sheet.dbo.tbl_M_Tam TD  ON TD.Name = EU.Name

问题是有时 EU.Name 就像 'name1' 而 TD 是 'name1 KO' 在这种情况下连接不起作用。因此,当它是一个单词字符串时,我想通过在 EU.Name 中添加字符串 'KO' 来使其工作。

有没有一种简单的方法可以做到这一点,我正在使用 SQL Server ?

4

4 回答 4

2

如果这仅适用于一个特定的字符串('KO'),那么这应该可以工作。

RIGHT JOIN Sheet.dbo.tbl_M_Tam TD  
    ON TD.Name = CASE WHEN EU.Name LIKE '% %' THEN EU.Name ELSE EU.Name + ' KO' END
于 2013-09-23T11:49:50.113 回答
1

你可以做到,但它不会很快:

RIGHT JOIN Sheet.dbo.tbl_M_Tam TD  ON 
  CASE when charindex(' ', TD.Name) = 0 then td.name + ' KO' else td.name end = EU.Name

评估 case 语句,如果不存在空格,则添加 'KO,否则使用原始列值。

于 2013-09-23T11:53:12.830 回答
1
  RIGHT JOIN Sheet.dbo.tbl_M_Tam TD  ON TD.Name LIKE EU.Name +'%'

但请注意,这不是在JOIN使用率很高的系统中对多行执行 a 的最有效方法。如果您想提高效率,请尝试以某种方式清理数据,以便您可以直接进行 col1 等于 col2 连接。

于 2013-09-23T11:50:05.843 回答
1
RIGHT JOIN Sheet.dbo.tbl_M_Tam TD 
ON TD.Name = EU.Name OR TD.Name = Eu.Name + ' KO'

创建了一个关于它如何工作的示例。

http://sqlfiddle.com/#!3/87e081/2

于 2013-09-23T11:51:07.710 回答