函数返回表。想要将每一行与不同的表进行比较

时间:2012-08-25 15:21:42

标签: sql sql-server sql-server-2008 tsql

我有一个名为Document的表。我内部有两列:InventorAttorney。我想找出有Attorney = Inventor的行。

符合"定义的样本数据"授权书=发明人:

Inventor: Tom Kaufmann
Attorney: Tom Kaufmann

Inventor: Kaufmann
Attorney: Kaufmann; Tom

Inventor: Kaufmann; T
Attorney: Kaufmann; Tom

Inventor: Kaufmann; Tom
Attorney: Kaufmann; T

Inventor: Kaufmann; Tom, Somi; Jack
Attorney: Kaufmann; Tom

Inventor: Kaufmann; Tom,
Attorney: Kaufmann; Tom, Somi; Jack

对于上述所有情况,我们可以说律师=发明人。我如何比较它?我有一个拆分函数(表值函数),它基本上可以根据分隔符和返回来分割数据。我想我应该拆分名称然后创建游标来处理每一行并将其与其他行进行比较。但这会导致游标太多而且会变得混乱。有没有人有更好的方法来比较这些数据?我希望你能得到我的问题。如果没有,请告诉我。

1 个答案:

答案 0 :(得分:0)

这可能适合你。您需要换出列名称。它基本上只匹配最短的位置

where  SUBSTRING(caseID  ,1, CASE WHEN len(mimeType) < len(caseID) THEN len(mimeType) else len(caseID) END) 
   =   SUBSTRING(mimeType,1, CASE WHEN len(mimeType) < len(caseID) THEN len(mimeType) else len(caseID) END)