当连接表时SQL Server'like'(SQL Server 2012)

问题描述:

我需要从两个不同的数据库连接两个表。一张表来自他们的飞行操作软件,并被称为'旅行号码'列'旅行'。我需要将其加入到一张包含会计软件中的发票的表格中,其中包含“发票号码”列。当连接表时SQL Server'like'(SQL Server 2012)

发票号码可以是:

  • 旅行数
  • CM + [旅行数]
  • [旅行数] + [AZ]
  • [旅行数] + [AZ] + [AZ]
  • [旅行数] + [AZ] + [AZ] + [AZ]
  • CM + [旅行数] + [AZ]
  • CM + [参P个] + [AZ] + [AZ]
  • CM + [旅行数] + [AZ] + [AZ] + [AZ]

所以加入将是[发票编号] = [旅行[发票号码] ='CM'+ [旅行号码]或[发票号码] = [旅行号码] + [aZ] OR ....

有没有更好,更简洁的方式来做到这一点?我无法使用[发票号码],如'%'+ [旅行号码] +'%'等,因为这不仅仅包含上述匹配条件,例如它将匹配旅程号码1000和发票号码10001。在[aZ]集合中是否有这种说法〜这个〜+ 0-3个字符?

+0

正则表达式的...我会过滤/先清理从他们的数据发票号码,然后用你的数据加入。 – 2014-10-16 19:29:20

+0

为什么你需要更简洁的方式?减少打字?您的当前版本完全显示发生了什么并且很容易扩展。连接需要索引/表扫描任何方式,所以一些额外的字符串比较不会影响性能。 – adrianm 2014-10-17 06:06:18

+0

@adrianm你说得对或多或少。我原本想让阅读未来的人更容易阅读,但这是我格式化的功能。正确格式化后,我相信很容易理解。 – 2014-10-17 17:53:41

您可以使用PATINDEX,您添加到条件

PATINDEX([Trip Number] + '[a-z][a-z][a-z]', [Invoice Number]) =1