2012-05-09 5 views
0

를 포함 제외하는 I가 잘 실행 다음과 같은 오라클 쿼리오라클 SQL 쿼리 행이 숫자가 아닌 문자

SELECT c.customercode, s.sales_id 
FROM customers c 
LEFT JOIN sales s ON c.customercode = s.sales_id 
WHERE c.address IS NOT NULL 

과 결과가 같은 것을 찾고 반환

customercode  sales_id 
12345678   456 
34534534   678 
23423423   X123 

것은 내가 좋아하는 것이 무엇 할 일은 sales_id가 숫자가 아닌 다른 것을 포함하는 행을 제외하는 것입니다. 따라서 위의 결과에는 3 행이 포함되지 않습니다.

답변

4

정규 표현식을 사용할 수 있습니다. 이 경우, regexp_like(sales_id, '^[[:digit:]]*$')

SQL> with x as (select 12345678 code, '456' sales_id from dual union all 
    2    select 34534534, '678' from dual union all 
    3    select 23423423, 'X123' from dual) 
    4 select * 
    5 from x 
    6 where regexp_like(sales_id, '^[[:digit:]]*$'); 

     CODE SALE 
---------- ---- 
    12345678 456 
    34534534 678 
1

TRANSLATE도 작동합니다

WITH q AS (
SELECT '12345678' customercode,'456' sales_id FROM dual 
UNION ALL 
SELECT '34534534','678' FROM dual 
UNION ALL 
SELECT '23423423','X123' FROM dual 
) 
SELECT * 
    FROM q 
WHERE TRANSLATE(sales_id,'A1234567890','A') IS NULL;