SELECT *
FROM company_address
WHERE address_telephone LIKE '%12%'
AND address_telephone LIKE '%45%' (edit)
简短问题:有没有办法只使用一次列名?
(编辑:这是一个例子,对不起......)
答案 0 :(得分:3)
如果您真的想在一次搜索中执行此操作,可以将搜索条件放入表变量并对其进行通配符连接:
DECLARE @t table (s varchar(20))
insert into @t values('12')
insert into @t values('45')
select ca.* from company_address ca inner join
@t t on ca.address_telephone like '%' + t.s + '%'
答案 1 :(得分:2)
你的条款有缺陷。 address_telephone
LIKE '%12%'
不能成为LIKE '%125%'
,因此无论如何只需要其中的第二个。
如果这只是一个示例,并且您实际上没有打算WHERE
逻辑,REGEXP
可能适用于您的情况:
WHERE address_telephone REGEXP '^.*125[0-9]+$'
答案 2 :(得分:0)
简答:否
附注:我不知道您的查询业务规则,但看起来您可能希望使用OR
代替AND
。
答案很长:如果是平等的话,你可以使用IN
。但是,由于您使用的是LIKE
,因此您必须指定每个LIKE
条件。
答案 3 :(得分:0)
在你的例子中,是的:
SELECT *
FROM company_address
WHERE address_telephone LIKE '%125%'
解释
如果address_telephone LIKE '%125%'
为真
那么address_telephone LIKE '%12%'
也必须是真的,所以不需要将它添加到查询
答案 4 :(得分:0)
您通常可以使用通配符等将多个喜欢组合成一个语句。请参阅下面的一个简单示例
declare @test varchar(50)
set @test = '123456789'
select 'true' where @test like '123%456%9'
编辑:顺便说一下,返回'true'
答案 5 :(得分:0)
也许您正在寻找Levenshtein distance功能?它应该允许你进行模糊搜索。有一个here。