2014-05-12 10 views
3

hstore 확장자를 가진 PostgreSQL 데이터베이스를 사용하고 있으며 가장 간단한 것을 만들려고합니다 - vd_data (hstore) 열이 비어있는 모든 레코드를 얻으십시오 ({}).비어있는 hstore로 레코드 받기

정말 쉽지만 인터넷에서 직접 찾아 볼 수는 없습니다. 그래서 내가 액티브 DSL을 사용하여 몇 가지 예를 게시합니다 내 레일 응용 프로그램에서 사용하고 있습니다

Video.where('vd_data != NULL') 
# => [] (empty result. I have about 20 videos with vd_data populated in my db) 

Video.where('vd_data != {}') 
# => Syntax error 

Video.where('vd_data != ""') 
# => ERROR: zero-length delimited identifier at or near """" 

사람이 순수 SQL에서 보는 방법과 같은 쿼리 나 조언을 할 수 있습니까?

답변

3

{}HSTORE의 유효한 표현식이 아닙니다.

대신, 다음과 같이 빈 HSTORE을 표현하기에도 표현 hstore('')하거나 ''를 사용

Video.where("vd_data != ''") 

증명 SQLFiddle Demo에.

+0

오, 이제 알겠습니다. 나는'Video.where ('vd_data! = ""')를 시도하고 있었고 구문 오류가있어서 그 트랙을 떠났다. 좋아, 고마워! – mbajur

+2

MySQL이나 SQLite와 달리 PostgreSQL에서는 큰 따옴표와 큰 따옴표를 사용하는 경우 큰 차이가 있습니다. 문자열 값을 나타내려면 항상 작은 따옴표를 사용해야합니다. 식별자 이름을 이스케이프하려면 큰 따옴표를 사용해야합니다. – mvp