我有一个关于使用临时表和大约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)) +'%'
它可以工作,但只适用于一列,当我想避免与连接争用时有更好的方法(可能以后可能会有更多列)?
答案 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,'%');