2012-06-08 3 views
0

가능한 중복 :
Is there a combination of “LIKE” and “IN” in SQL?같은 쿼리에서 사용하는 방법을

우리가 같은이

select inticap(last_name),length(last_name) from employees 
    where last_name in(like '%J%',like '%A%',like '%M%'); 

OR 

    select inticap(last_name),length(last_name) from employees 
where last_name like in('%J%', '%A%',l'%M%'); 

같은 동일한 쿼리의 조건에서 사용할 수있는

나는 그것을 알고있다 실 거예요. 여기에 성 (姓)의 첫 글자와 성의 길이를 표시하고 알파벳 'A', 'J'및 'M'으로 이름을 표시하고 싶습니다. 언급 한 바와 같이 당신이 선호하는 것처럼, 당신이 직접 LIKEIN을 결합 할 수 없습니다 나에게

+0

중복 된 http://stackoverflow.com/questions/4335359/is-it-possible-to-use-like-and-in-for-a-where-statment 및 http://stackoverflow.com/questions/10747996/in-sql-server-how-do-i-search-for-i-where-i-need-to-u/10748091 # 10748091 및 기타 여러 검색 –

+0

아니요 ' t 작업, '% J %'와 (과) 같은 '% A %'와 같은 쿼리에서 OR을 사용할 수 있습니다. – shobhit

+0

이것은 불가능합니다. –

답변

3

도와주세요.

여기에 하나 개의 미봉책 옵션들 :

SELECT INITCAP(last_name) 
,  LENGTH(last_name) 
FROM employees 
WHERE +1 IN (SIGN(INSTR(last_name,'J')) 
      , SIGN(INSTR(last_name,'A')) 
      , SIGN(INSTR(last_name,'M'))) 

또는, 적어도 10g에 있다면, 당신은 정규 표현식을 사용할 수 있습니다

SELECT INITCAP(last_name) 
,  LENGTH(last_name) 
FROM employees 
WHERE REGEXP_LIKE(last_name,'(J|A|M)') 

을 ...하지만 일반적으로 정규 표현식은 더 있습니다 정원이 다양한 SQL 기능보다 CPU 집약적입니다.

3
select inticap(last_name),length(last_name) from employees 
where last_name like '%J%' OR last_name like '%A%' OR last_name '%M%'; 
+0

안녕하세요, 나는 그것이 작동하지만 나는에서 쿼리를 작성하고 싶습니다 –

+0

처럼 볼 수 있습니다 - http://stackoverflow.com/questions/3350106/how-to-use-like-clause-with-in-caluse- in-sql-server –

+1

이전 주석의 링크와 관련하여 : 테이블을 만드는 대신 piplined 함수를 사용하고 'like'조건을 PL/SQL 테이블에 프로그래밍 방식으로 추가 할 수 있습니다. – Dzik

관련 문제