“ in statement”中的通配符

时间:2019-07-17 08:38:21

标签: sql sql-server

我正在尝试过滤出发票编号相似但已添加一些字符的记录。我不希望记录有信用发票的地方。发票编号看起来像6245GE134,而信用发票通常会添加“ CR”,但这有所不同。

我尝试使用replace语句进行各种修改:

 where invoiceNr not in (select replace (invoiceNr, 'cr' ,'') from 
 tblinvoices where invoicenr like '%cr' and strType = 'credit'

问题是,有些字段中添加了“ cr”,而另一些字段中则使用了“ credit”甚至是完全不同的字段。 理想情况下,我希望能够使用通配符来覆盖所有可能性,请参阅下面的

 where invoiceNr not like '%' + (select invoiceNr from tblinvoices where 
 strtype = 'credit' ) + '%'

预期:它将过滤出发票类型中贷方类型的发票中出现发票的所有记录

实际:

  

子查询返回了多个值。当   子查询遵循=,!=,<,<=,>,> =,或当子查询用作   表达式。

1 个答案:

答案 0 :(得分:0)

如果我理解您的意思。 您应该可以使用“不存在”解决问题。

就像朱利安(Julian)在这里一样:https://stackoverflow.com/a/13376052/9272910

编写没有完整语句的完整SQL有点棘手。