从字典中选择记录

时间:2015-08-12 08:46:44

标签: sql sql-server select

我有一个关于使用临时表和大约30条记录作为表格中select的搜索基础的问题,比如字典。

临时表看起来像

    VALUES
+----------------+
|   alpha        |  
|   beta         |   
|   gamma        |  
|   omega        |
|   delta        |
|   theta        |
|   rtc. to 30   |
+----------------+ 

现在我有一张桌子

 text         varchar          nvarchar
 -----------+----------------+-----------
 28257      |   clarkailey   |   14438
 alpha      |   gamma        |   15023
 2869858    |   nioh         |   beta

现在可以搜索该表并获取包含临时字典表中值的记录吗?

我尝试过这样的事情

select ltrim(rtrim(VALUES)), table.text, table.varchar, table.nvarchar
from #_temp temp
    join table on table.text like '%' + ltrim(rtrim(temp.VALUES)) +'%'

它可以工作,但只适用于一列,当我想避免与连接争用时有更好的方法(可能以后可能会有更多列)?

2 个答案:

答案 0 :(得分:3)

一个选项是连接所有三列,然后执行连接

select ltrim(rtrim(VALUES)), table.text, table.varchar, table.nvarchar
  from #_temp temp
  join table on table.text + 'somerandomtext' +
              table.varchar + 'somerandomtext' +
              table.nvarchar
           like '%' + ltrim(rtrim(temp.VALUES)) +'%'

另一种是使用OR运算符:

select ltrim(rtrim(VALUES)), table.text, table.varchar, table.nvarchar
  from #_temp temp
  join table on (table.text like '%' + ltrim(rtrim(temp.VALUES)) +'%') OR 
                (table.varchar like '%' + ltrim(rtrim(temp.VALUES)) +'%') OR
                (table.nvarcharlike '%' + ltrim(rtrim(temp.VALUES)) +'%') 

答案 1 :(得分:0)

请尝试以下查询:
        select * from table join temp其中concat(text,varchar,nvarchar)就像concat('%',values,'%');