2014-08-31 4 views
0

저는 Postgres를 처음 사용하고 있으며 기존 Laravel 응용 프로그램에서 작업 중입니다. 항목 표는 data이라는 hstore 열을 사용합니다.Postgres 집계 Hstore

$query = \DB::table('entries') 
     ->where('f_id', '=', $f->id) 
     ->where('s_id', '=', \Config::get('s_id')) 
     ->select(\DB::raw('SUM(CAST("data"->\'total\' as decimal)) as "total"')) 
     ->get(); 

나는 그들이 여기 무슨 일을하는지 볼 수 있지만이 코드 조각 오류와 함께 실패합니다 :

SQLSTATE[22P02]: Invalid text representation: 7 ERROR: invalid input syntax for type numeric: \"\" (SQL: select SUM(CAST(\"data\"->'total' as decimal)) as \"total\" from \"entries\" where \"f_id\" = 70 and \"s_id\" = 1) 

나는 이유를 알아낼 수 없습니다 사람이 할 수 이것은 잘못된 쿼리입니다 문제를 설명해 주시겠습니까?

답변

2

사용 NULLIF은 빈 문자열 돌봐 : 모든 필드가 NULL 경우

'SUM(NULLIF("data"->\'total\', '')::numeric)) as "total"' 

는 물론 합계 NULL을 만들 수 있습니다.

+0

사실 내 문제를 해결하기 때문에이를 수락 할 것입니다. 매우 감사합니다 – outrunthewolf

0

여기의 문제는 실제 쿼리가 아닙니다.

"total"항목이 비어있어 10 진수로 캐스팅하면 오류가 발생했습니다.

관련 문제