2009-12-22 4 views
15

SQL Server와 PostgreSQL 모두에서 실행할 수있는 응용 프로그램을 만들려고합니다.Sql Server와 PostgreSQL 모두에서`where booleanvalue = false`를 할 수 있습니까?

나는 비트 유형에 대한 기본값은 true 또는 false 여야하기 때문에 매우 혼란이다 (수행해야 SQL Server에서 기본적으로

select * from table where booleancol=false 

하는 일반적인 표현을 찾을 수가 없어,하지만 당신이 할 수있는 '이 t은

select * from table where booleancol=0 

는 PostgreSQL을에 내가해야 할 참 또는 거짓 또는에 대한 시험)에 할당

select * from table where booleancol is false 

꽤 많은 쿼리가 우리 프로그램에 있습니다. 따라서 if(dbformat=="postgres").. 쓰레기 대신에 사용할 수있는 보편적 인 구문이 있다면 더 좋을 것 같습니다.

또한 나는 부울/비트 형식으로 열을 정수 형식으로 변경하지 마십시오 .. 비록 옵션입니다 ..

답변

17

SQL Server는 비트 값을 true 또는 false 인 varchar 값으로 자동 변경합니다. 그래서 다음과 같이 작동합니다 :

select * from table where booleancol = 'false' 

postgre가 똑같은 일을하는지 모르겠습니다.

-7

ORM을 사용하여, 오늘 코드 SQL을 넘길 필요가 없습니다. 그들은 존재하므로 당신이 겪었던 바로 그 문제를 해결합니다.

+0

이것이 왜 downvoted 되었습니까? – docesam

+2

그것은 (a) 완전히 질문에 대답하지 못하고, (b) OP 어플리케이션에 관한 모든 것을 가장하는 것처럼 하향 투표되었습니다. – henrebotha

0

옵션 인 경우 하나의 RDBMS에서 다른 RDBMS로 SQL을 변환하는 문제를 처리 할 수있는 객체 관계형 매핑 프레임 워크를 살펴보십시오.

1

직장에서는 SQL Server에서 boolean을 나타 내기 위해 char (1) 열에서 'T'와 'F'를 사용합니다. 이런 종류의 호환성이 이유인지는 확실치 않지만, "booleancol = 'F'"는 데이터베이스의 맛에 영향을 미칠 것입니다.

29

죄송합니다.이 부분은 사실이 아닙니다.

select * from table where not booleancol 
select * from table where booleancol = 'f' 
select * from table where booleancol = 'false' 
select * from table where booleancol = 'n' 
select * from table where booleancol is false 
select * from table where booleancol is not true 
select * from table where booleancol = false 
select * from table where booleancol <> true 
select * from table where booleancol != true 
select * from table where booleancol <> 'TRUE' 

예입니다 그 : 나는

select * from table where booleancol is false

는 사실, 모두 다음 구문은 PostgreSQL의에서 유효해야

PostgreSQL을에

;-)보다 절반 진실 postgres의 유연한 구문을 사용하여 다른 데이터베이스의 응용 프로그램을 아주 쉽게 이식 할 수 있습니다. 을 참조하십시오

+0

예, 목록에서 제외 된 구문은 SQL Server에서도 지원되지만 SQL Server에서만 유효합니다. select * from table where booleancol = 0 – Earlz

+1

그 목록은 모든 것이 아니며, 하지만 docs 링크는 다음과 같습니다. 사용중인 구문 (false/true에 0/1)도 유효한 PostgreSQL입니다. –