문제

멍청한 질문처럼 보이지만 아직. 나를 멍청하게하는 것은 내 IDE 일 수 있습니다. 코드는 다음과 같습니다 (이것은 dblinq에서 생성) :

SELECT  pics$.Caption, pics$.Id, pics$.Path, pics$.Public, pics$.Active, portpics$.PortfolioID
FROM main.Pictures pics$
inner join main.PortfolioPictures portpics$    on  pics$.Id = portpics$.PictureId

WHERE   portpics$.PortfolioId = 1 AND pics$.Id > 0
--AND pics$.Active = 1 AND pics$.Public = 1
ORDER BY pics$.Id

이 쿼리를 실행하면 Active and Public이라고 불리는 두 개의 부울 필드로 3 개의 행을 다시 얻습니다. 주석에 추가 된 라인에 추가하면 행이 없습니다. 라인을 다음 중 하나로 변경하십시오.

pics$.Active = 'TRUE'
pics$.Active = 't' 
pics$.Active =  boolean(1)

작동하지 않습니다. 오류 또는 결과가 없습니다. 나는 이것을 위해 Google을 검색하고 실제 SQL 쿼리가 부족하다는 것을 발견했습니다. 그리고 우리는 여기 있습니다.

그래서 : sqlite의 where 절에서 부울 필드를 어떻게 사용합니까?

IDE는 SQLITE 관리자입니다.

업데이트: 글쎄, 나는 대답을 찾았다. SQLITE 관리자는 자신의 유형을 분명히 구성 할 수 있습니다. 생성되는 생성 SQL은 다음과 같습니다.

CREATE TABLE [Pictures] ([Id] INTEGER  PRIMARY KEY AUTOINCREMENT NOT NULL,
[Path] VARCHAR(50)  UNIQUE NOT NULL,[Caption] varchAR(50)  NULL,
[Public] BOOLEAN DEFAULT '0' NOT NULL,[Active] BOOLEAN DEFAULT '1' NOT NULL)

쿼리의 수정은 다음과 같습니다

AND pics$.Active = 'Y' AND pics$.Public = 'Y'

여기서 실제 문제는 첫 번째 답변자가 지적했듯이 SQLite에는 부울 유형이 없다는 것입니다. 문제가 아니라 알아야 할 것이 있습니다. 사용 중입니다 dblinq 내 데이터 계층을 생성하려면; 아마도 sqlite가 지원하지 않는 유형의 매핑을 허용해서는 안됩니다. 또는 sqlite에 고유하지 않은 모든 유형을 문자열 유형에 매핑해야합니다.

도움이 되었습니까?

해결책

sqlite에는 부울 유형이 없습니다. SQLITE는 어떤 데이터 유형을 지원합니까?

주석이있는 줄은 작동해야합니다. 데이터에 1과 0의 정수 값을 사용하여 부울을 나타냅니다.

다른 팁

WHERE 절에서 부울 값을 비교하기 위해 비교 연산자를 사용할 필요가 없습니다.

'부울'열이 is_selectable이라는 이름이 있다면, 당신의 위치는 단순히 다음과 같습니다. WHERE is_selectable

SQLITE에는 내장 부울 유형이 없습니다. 대신 정수를 사용해야합니다. 또한 값을 'true'및 't'와 비교할 때 부울이나 정수가 아닌 문자열과 해당 값과 비교하므로 항상 비교가 실패합니다.

원천: http://www.sqlite.org/datatype3.html

-> 이것은 is_online 필드의 잘못된 값을 가진 결과를 제공합니다.

device_master에서 *를 선택하십시오. 여기서 is_online! = 1

-> 이것은 IS_ONLINE 필드의 실제 가치를 가진 결과를 제공합니다.

is_online = 1 인 device_master에서 *를 선택하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top