2014-01-10 4 views
1

데이터베이스에있는 사람이 데이터베이스를 개발 한 사람이 string으로 정의 된 데이터베이스를 가져 오려고합니다. 열에있는 데이터 만 과학 표기법 일 때 정의해야합니다. int. 쿼리를 생성 할 때 그 값을 하드 코드 할 때 작동하지만 그때 매개 변수를 추가하려고하면 더 이상 작동하지 않습니다. 내가 매개 변수에 추가 할 때 다음 SQL에서 문자열을 int로 변환/캐스팅

SELECT EYE_COLOR, HAIR_COLOR, FIRST_NAME, LAST_NAME FROM PERSONS WHERE AGE = 4E3 

쿼리입니다 : 다음은 쿼리 harcoded됩니다

SELECT EYE_COLOR, HAIR_COLOR, FIRST_NAME, LAST_NAME FROM PERSONS WHERE AGE = :AGE 

첫 번째 쿼리가 24 개 행이 데이터 테이블 반환 (예상대로)하지만, 두 번째는 반환 13 행. 내 생각 엔 매개 변수가 전달 될 때 열이 문자열로 정의되어 있기 때문에 추측 할 수 있습니다. sqldeveloper와 oracle을 사용하고 있습니다.

+2

을 반환? 결과에 'AGE'를 포함하면 두 결과 모두 다시 나타납니다. – mfdoran

+0

과학 표기법이 INT에 매핑되지 않습니다. 4E-3 또는 1.233E7은 어떨까요? – OldProgrammer

+0

다음의 값은 무엇입니까? 정확한 문자 그대로 보여주세요. – OldProgrammer

답변

0

어쩌면이 도움이 될 것입니다 결과 집합의 차이는 무엇을

SELECT utl_raw.cast_to_binary_integer('4E3') "some_age_huh?" 
    FROM dual; 

SQL> 1251 

SELECT to_char(4.4E3) FROM dual; 

SQL> 400