如何使用另一个表的值进行LIKE搜索?

时间:2015-09-14 17:27:11

标签: join sql-server-2012

我想在两张桌子上进行LIKE搜索。一个表具有一列搜索项,另一个表具有用于执行LIKE搜索的列。以下是表格:

create table #TableA
(
    UserName Varchar(50)
)
create table #TableB
(
    Department Varchar(50),
    Keyword Varchar(50)
)
Insert Into #TableA VALUES('bob_sales') 
Insert Into #TableA VALUES('mary_accounting')
Insert Into #TableA VALUES('sammi_accountant')
Insert Into #TableA VALUES('fred_bestSellerEver123')

Insert Into #TableB VALUES('Accounting', 'accounting') 
Insert Into #TableB VALUES('Accounting', 'accountant')
Insert Into #TableB VALUES('Sales', 'sales')
Insert Into #TableB VALUES('Sales', 'seller')

我想运行一个使用 LIKE%keyword%的查询并给我:

bob_sales              | Sales
mary_accounting        | Accounting
sammi_accountant       | Accounting
fred_bestSellerEver123 | Sales

2 个答案:

答案 0 :(得分:1)

<强> SqlFiddleDemo

SELECT
   ta.UserName
   ,tb.Department
FROM TableA ta
JOIN TableB tb
  ON  ta.UserName LIKE '%' + tb.[keyword] + '%' 
 /* If needed  add COLLATE Latin1_General_CI_AS */

<强>说明:

如果您的数据可能包含以下内容:sammi_accountant_accounting,则应将DISTINCT添加到SELECT语句,以避免重复。

对于bob_sales_accounting,bob会出现两次,因为它属于2组。

答案 1 :(得分:1)

另一种没有加入的方法,只是为了好玩:

attributedTitle