2015-07-02 6 views
0

Мне нужно найти студентов с A и M от их имени, но у них нет имени a и m от их фамилии. Это мой запрос, но по какой-то причине он продолжает показывать фамилии, в которых есть M ... Что я делаю неправильно?Как использовать два условия LIKE?

SELECT (firstname || ' ' || lastname) AS "FullName" 
    FROM A5 
WHERE Lower(FirstName) LIKE '%a%m%' 
    AND Lower(LastName) NOT LIKE '%a%m%' 
ORDER BY LastName, 
     FirstName 
+0

а и м вместе как в имени и фамилии? Кроме того, вы ищете сравнение с регистром? Ваш запрос имеет более низкое значение, но вы говорите, что отображаются фамилии с верхним регистром M (что очевидно) – JavaHopper

ответ

1

WHERE положение должно быть:

WHERE (Lower(FirstName) LIKE '%a%m%' 
OR Lower(FirstName) LIKE '%m%a%') 
AND Lower(LastName) NOT LIKE '%a%' 
AND Lower(LastName) NOT LIKE '%m%' 

Вы были в том числе только случаи, когда FirstName имел в с последующим М. Точно так же вы исключали только случаи, когда LastName имел и AND, и m, где a - до m.

1
SELECT (firstname || ' ' || lastname) AS "FullName" 
FROM A5 
WHERE (lower(firstname) like '%a%' and lower(firstname) like '%m%') and ((lower(lastname) like '%a%' and lower(lastname) not like '%m%') or (lower(lastname) not like '%a%' and lower(lastname) like '%m%')) 
ORDER BY LastName,FirstName 

Попробуйте это и пожалуйста маркируют как правильный ответ и upvote мой ответ, если работает отлично

+0

@Ana Mar что не так с этим запросом? Он должен наилучшим образом решить вашу проблему. Дайте мне знать случаи сбоя. – JavaHopper

Смежные вопросы