2011-03-02 3 views
1

jdbc를 사용하여 SQL Server에서 데이터를 검색하고 ANSI_NULLS가 해제됩니다. 그래서 내가 뛰면SQL Server에서 JDBC executeQuery()가 null로 결과를 찾을 수 없습니다.

select * from cj_log where evt = null 

나는 결과를 얻을 수있다. 나는이

Statement st = DBConnection.getConnection().createStatement(); 
String sql = "select * from CJ_LOG where EVT=null"; 
ResultSet rs = st.executeQuery(sql); 

같은 성명에 넣을 때

는하지만, 결과 세트는 비어 있습니다. 여기에 어떤 문제가 있습니까?

+2

EVT가 NULL 인 CJ_LOG에서'select *를 사용하면 어떻게됩니까? –

+1

ANSI_NULLS는 연결 별 설정입니다. 'DBConnection.getConnection()'이 ANSI_NULLS가 꺼져 있다는 것을 보장하지 않는다면, ANSI_NULLS가 실제로 ON (기본값) 일 가능성이 높습니다. – ig0774

답변

2

당신은

where EVT is null 

아무것도, 심지어 NULL, NULL에 어느 동일하지 말 할 필요가있다.

이렇게 생각하십시오. Null은 "모른다"는 것을 의미합니다. 당신이 요구하는

대답은 "나도 몰라" "나도 몰라 내가 뭔가 동일 모르는 일이다". 그래서 당신은 어떤 행도 얻지 못합니다.

+1

SQL 표준과 관련하여 절대적으로 옳은 것은 SQL Server가 실제로 ANSI_NULLs를 사용하지 않고 실행중인 경우 'select * from CJ_LOG where EVT = NULL'은 실제로'select * from CJ_LOG와 같습니다. where where CJ_LOG where EVT는 NULL이다. [여기] (http://msdn.microsoft.com/en-us/library/ms188048.aspx)를 참조하십시오. – ig0774

+0

포인트. 결론은 "ANSI_NULLS를 켜고 둡니다"입니다. :-) – Ben

+0

늦게 답변 해 주셔서 감사합니다. 도와 주셔서 감사합니다. – Raistlin

관련 문제