SQL中使用IN中的通配符

Dus*_*sty 39 sql sql-server wildcard in-function

因为我认为这应该是一个基本问题,我知道这个问题可能已被提出,但我无法找到它.我可能要获得我的同伴压力徽章,但无论如何我都会问:

在使用IN时,在SQL Server中是否有一种我不知道使用通配符%的方法.

我意识到我可以使用OR之类的:

select *
from jobdetails
where job_no like '0711%' or job_no like '0712%'
Run Code Online (Sandbox Code Playgroud)

在某些情况下,我可以使用子查询,如:

select *
from jobdetails
where job_no in (select job_no from jobs where job_id = 39)
Run Code Online (Sandbox Code Playgroud)

但我希望做以下事情:

select *
from jobdetails
where job_no in ('0711%', '0712%')
Run Code Online (Sandbox Code Playgroud)

在这种情况下,它使用百分号作为字符而不是通配符,因此不返回任何行.我现在只需要使用一堆OR,但我知道必须有更好的方法.你用什么方法呢?

Aar*_*ton 24

怎么样:

WHERE LEFT(job_no, 4) IN ('0711', '0712', ...)
Run Code Online (Sandbox Code Playgroud)

  • 我很感激你的反应,是的,但这可能是因为我的例子简化了.我想要一些不一定依赖于前4个字符的东西.我正在寻找更多依赖通配符的东西.再次感谢. (5认同)

Gal*_*boy 11

这样的事怎么样?

declare @search table
(
    searchString varchar(10)
)

-- add whatever criteria you want...
insert into @search select '0711%' union select '0712%'

select j.*
from jobdetails j
    join @search s on j.job_no like s.searchString
Run Code Online (Sandbox Code Playgroud)


小智 10

我想我可以用简单的形式解决这个调查的创始人想要的问题.它适用于我,实际上这就是我在这里开始的原因.我相信只需在列中使用括号,如'%text%'和ORs 一起使用它就可以了.

select * from tableName
where (sameColumnName like '%findThis%' or sameColumnName like '%andThis%' or 
sameColumnName like '%thisToo%' or sameColumnName like '%andOneMore%') 
Run Code Online (Sandbox Code Playgroud)


Jer*_*yth 7

你可以尝试这样的事情:

select *
from jobdetails
where job_no like '071[12]%'
Run Code Online (Sandbox Code Playgroud)

不完全是你问的问题,但它具有相同的效果,并且在其他方​​面也很灵活:)