在另一个Select中使用select in a like子句

时间:2015-01-23 22:46:31

标签: sql-server

我的sql server 2012中有两个表。第一个表是tblInvoiceChange_Log,它有这样的数据,

log_id       log_date                description
------------------------------------------------
 123     2014-05-16 05:20:39.393     BL1202 locked
 124     2014-08-21 03:12:05.143     BL0293 unlocked
  -              -                           -
  -              -                           -   

还有另一个表tblInvoice,其中包含这样的数据,

Bill_Number    created_by_id     created_by_name
-------------------------------------------------
BL1202           3081               ABC
BL0293           5236               XYZ
  -               -                  -
  -               -                  -

我想获取所有日志信息,其中“description”列的子字符串与另一个表的“Bill_Number”列匹配。

我尝试了以下查询,但它给出了一个错误,说“子查询返回的值超过1。当子查询跟随=,!=,<,< =,>,> =或时,这是不允许的当子查询用作表达式时。“

select * from tblInvoiceChange_Log (nolock)
where description like '%' + (select distinct Bill_Number
from tblInvoice (nolock)) + '%'

我怎样才能做到这一点?任何想法将不胜感激。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以在加入中使用like

select * 
from tblInvoiceChange_Log (nolock) a
join (select distinct Bill_Number from tblInvoice (nolock)) b 
    on a.description like '%' + b.Bill_Number  + '%'