2013-10-28 2 views
0

У меня есть таблица со следующим значениемSQL: Как использовать условия И и ИЛИ в Sql

docid dcname doctitle 
1  **aa **aaa01-01 
2  aa** aafddg-02** 
3  a**a asds***90-05 
4  abcd abcd-06. 

Теперь в этой таблице, я хочу, чтобы фильтровать значения «Doctitles» начало и окончание с **

мой результат должен быть

dcid docname doctitle 
3 a**a asds***90-05 
4 abcd abcd-06 

я использую ниже запрос, но полученный результат только Doctitles с ** в среднем

SELECT * 
    FROM table1 
WHERE  doctitle NOT LIKE '**%' 
     AND doctitle NOT LIKE '%**' 
     AND doctitle LIKE '%**%' 

это дает мне только ниже результата dcid DOCNAME doctitle 3 а * ASDS ** 90-05

Нужна помощь по этому вопросу.

+0

вы хотите значения "Doctitles" начало и окончание с ** ??? или Без **? – Snehal

ответ

0

Try без and doctitle like '%**%' Ваш запрос должен выглядеть select * from table1 where doctitle not like '**%' and doctitle not like '%**'

Другое решение:

SELECT * FROM table1 WHERE LEFT(doctitle,2) != '**' AND RIGHT(doctitle,2) != '**' 
+0

, но этот запрос возвращает мне значения без каких-либо ** в doctiltes. Я хочу, чтобы доктрины содержали «aa ** 09_01» – user2861354

+0

. Я добавил еще одно решение для моего ответа. – Denino

0

, попробуйте следующие варианты

select * from table1 where doctitle like '**%' and doctitle like '%**' 

или

select * from table1 where doctitle like '**%' 
UNION 
select * from table1 where doctitle like '%**' 

Для получения более подробной информации см this

0

Я попробовал это, и она работала -

select * from 
(
select 
1 docid , '**aa' dcname , '**aaa01-01' doctitle 
from dual 
union all 
select 
2,  'aa**', 'aafddg-02**' 
from dual 
union all 
select 
3 ,  'a**a' , 'asds***90-05' 
from dual 
union all 
select 
4 , 'abcd' , 'abcd-06.' 
from dual 
) 
where doctitle not like '**%' and doctitle not like '%**' 
0

Предполагая, что вы имеете в виду вы не хотите doctitle сек начальную или конечную с **, вам просто нужно опустить ваш последний условный :

SELECT * 
FROM table1 
WHERE doctitle NOT LIKE '**%' 
    AND doctitle NOT LIKE '%**' 
+0

спасибо, что это решение было легко и снова работало. – user2861354

0

попробовать это ..

SELECT * 
FROM table1 
WHERE doctitle LIKE '%**%' 
AND  docid NOT IN (SELECT docid FROM tabel1 WHERE doctitle NOT LIKE '**%') 
AND  docid NOT IN (SELECT docid FROM tabel1 WHERE doctitle NOT LIKE '%**') 
+0

Я объявляю loacal variable @ filter = '_ **' мы можем записать его таким образом @ filter = '_ **' & '** _' ответ был бы полезен – user2861354

+0

Нет, вам придется писать его отдельно, например '@filter LIKE '_ **' AND @filter LIKE '**' ' –

0

SELECT * FROM table1 ГДЕ doctitle НЕ НРАВИТСЯ '%' ИЛИ doctitle НЕ НРАВИТСЯ '%'

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