我正在加入 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 ?
我正在加入 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 ?
如果这仅适用于一个特定的字符串('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
你可以做到,但它不会很快:
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,否则使用原始列值。
RIGHT JOIN Sheet.dbo.tbl_M_Tam TD ON TD.Name LIKE EU.Name +'%'
但请注意,这不是在JOIN
使用率很高的系统中对多行执行 a 的最有效方法。如果您想提高效率,请尝试以某种方式清理数据,以便您可以直接进行 col1 等于 col2 连接。
RIGHT JOIN Sheet.dbo.tbl_M_Tam TD
ON TD.Name = EU.Name OR TD.Name = Eu.Name + ' KO'
创建了一个关于它如何工作的示例。