SQL с несколькими LIKE более 1 переменной - PullRequest
1 голос
/ 11 ноября 2011
SELECT *
FROM company_address
WHERE address_telephone LIKE '%12%'
AND address_telephone LIKE '%45%' (edit)

Короткий вопрос: можно ли использовать имя столбца только один раз?

(редактировать: это был пример, извините за это ..)

Ответы [ 6 ]

3 голосов
/ 11 ноября 2011

Если вы действительно хотите сделать это в одном поиске, вы можете поместить свои критерии поиска в табличную переменную и выполнить групповое соединение для этого:

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 + '%'
2 голосов
/ 11 ноября 2011

Ваш пункт неверен.address_telephone не может быть LIKE '%12%', не будучи также LIKE '%125%', поэтому в любом случае необходим только второй из них.

Если это только примерный случай, и вы на самом деле не предполагали, что логика WHERE,REGEXP может работать в вашей ситуации:

WHERE address_telephone REGEXP '^.*125[0-9]+$' 
0 голосов
/ 11 ноября 2011

Может быть, вы ищете функцию Левенштейна ?Это должно позволить вам сделать нечеткий поиск.Здесь есть один .

0 голосов
/ 11 ноября 2011

Обычно вы можете использовать подстановочные знаки и т. Д., Чтобы объединить несколько лайков в одном утверждении.Ниже приведен тривиальный пример

declare @test varchar(50)    
set @test = '123456789'    
select 'true' where @test like '123%456%9'

Редактировать: кстати, возвращает 'true', кстати

0 голосов
/ 11 ноября 2011

в вашем примере, да:

SELECT *
FROM company_address
WHERE address_telephone LIKE '%125%'

объяснение

если address_telephone LIKE '%125%' истинно, тогда address_telephone LIKE '%12%' также должно быть истиной, поэтому нет необходимости добавлять его взапрос

0 голосов
/ 11 ноября 2011

Краткий ответ: Нет

Примечание: я не знаю ваших бизнес-правил для запроса, но похоже, что вы, возможно, захотите использовать OR вместо AND.

Длинный ответ: Если бы это было равенство, вы могли бы использовать IN.Однако, поскольку вы используете LIKE, вы должны указать каждое LIKE условие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...