首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL:在SQL中组合LIKE和IN,并在列中显示LIKE数组

SQL:在SQL中组合LIKE和IN,并在列中显示LIKE数组
EN

Stack Overflow用户
提问于 2019-01-11 22:29:29
回答 1查看 80关注 0票数 1

下面的代码可以将Like和IN组合起来。但是,在输出中需要一个列,其中包含用于类似内容的值:

代码语言:javascript
复制
SELECT file_id
FROM   table1 as t
WHERE  archival_date = '20180108'
WHERE  EXISTS(SELECT *
              FROM   (VALUES ('%portfolo1filename%'),
                             ('%portfolo2filename%'),
                             ('%portfolo3filename%')) Vals(val)
              WHERE  filename LIKE '%' + val + '%')  

作为输出,我需要:

代码语言:javascript
复制
____________________________
val                  file_ID
____________________________
portfolo1filename     2230
portfolo2filename     2240
portfolo3filename     3345        

当前代码的输出:

代码语言:javascript
复制
______________
   file_ID
______________
     2230
     2240
     3345    

注意:这里的val包含了我需要搜索的值列表(即文件名)

table1有以下条目:

代码语言:javascript
复制
filename                             file_ID    archival_date 
__________________________________________________________________
Broker1_portfolo1filename             2230         20180108
Broker1_portfolo2filename             2240         20180108
Broker2_portfolo3filename             3345         20180908
Broker2_portfolo2filename             1345         20180904
Broker3_portfolo1filename             3045         20180906
Broker2_portfolo2filename             3355         20180907
Broker2_portfolo3filename             7340         20180901
EN

Stack Overflow用户

发布于 2019-01-11 22:44:08

这可能会有帮助

代码语言:javascript
复制
select  distinct file_id, val
from table1,  VALUES ('%portfolo1filename%'),
                     ('%portfolo2filename%'),
                     ('%portfolo3filename%')) Vals(val)
where column1 like '%' + val + '%'

您可以检查自己的工作代码

代码语言:javascript
复制
CREATE TABLE [dbo].[table1](
    [id] [int] NULL,
    [column1] [varchar](40) NULL
) ON [PRIMARY]
GO

insert into table1 values (2230,    'portfolo1filename');
insert into table1 values (2245,    'portfolo2filenamedasdas');
insert into table1 values (2250,    'porto');


select  distinct id, val
from table1, (VALUES ('%portfolo1filename%'),
                     ('%portfolo2filename%'),
                     ('%portfolo3filename%')) Vals(val)
where column1 like '%' + val + '%'

工频

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54154892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档