Try this:
select * from A where emp_no = '22222';
그 방법은 잘 됩니다....ㅠ.ㅠ 도데체 무슨 원리로 A테이블은 조회가 가능하나 B테이블은 숫자로 조회가 가능하지 않는지 궁금해서 질문드려요
아마도 a 테이블에 emp_no 컬럼의 데이터는 숫자로만 이루어져 있는 문자만(ex '1111','2222'...) 있을 거구요. b 테이블에 emp_no 컬럼에는 숫자가 아닌 문자로 이루어진 데이터(ex '111A','2E22'..)가 있을 거예요. a 테이블의 컬럼과 조회조건인 숫자형(22222)을 비교할 때 숫자로만 이루어진 문자형 데이터는 숫자로 변환해주어 비교하지만 b 테이블에 있는 숫자가 아닌 문자로 구성된 데이터는 숫자형으로 변환이 불가하므로 뜨는 에러 같네요. 조회조건 컬럼이 문자형이면 ''는 붙여주세요. 습관적으로 ''를 붙이지 않게 되면 현재는 조회가 잘 될지 모르겠으나 추후에 데이터가 변경되면 위와 같은 오류가 생길 수 있어요.
A테이블이나 B테이블에 있는 emp_no는 사번으로 다 숫자만 들어가고있습니다.
현재 프로시저에서 function(함수) 콜 시에 사번을 넘겨주어서
함수에서 NUMBER 변수로 받아서 사용하고 있거든요..ㅠㅠ
같은 프로시저 내 다른 함수는 같은 방법으로 수치가 부적합하다는 오류는 나지 않는데
이 함수만 오류가 떠서 질문드렸습니다 ㅠㅠ CHAR변수에 저장하여 사용하니 잘 되네영..
SELECT * FROM B
WHERE (TRANSLATE(emp_no, '1234567890' ||emp_no, '1234567890') != emp_no
로 양쪽 테이블 모두 조회해보세요.
문제 해결이 안되는 원인은...
에러메시지를 그대로 받아들이지 않는데 있습니다.
오류 자료가 없다고 장담 하실일이 아닙니다.
오류 자료가 있을 것이라고 생각되네요.
오류 자료를 찾아보세요.
SELECT * FROM b WHERE TRANSLATE(TRIM(emp_no), 'a0123456789', 'a') IS NOT NULL ;
헉 진짜 숫자가 아닌 데이터가 존재하였네요 ㅠㅠ 당연히 없을 줄 알았던 제잘못이에요ㅠㅠ죄송합니다
오류 자료 찾는 좋은 쿼리 감사합니다 ㅠㅠ