2013-12-24 3 views
2

postgresql을 작성하고 Spring + Hibernate를 사용하여 java 코드에서 name1 매개 변수를 전달합니다.오류 : PostgreSQL에서 COALESCE 유형이 다양 함

SELECT * FROM Test 
WHERE name = COALESCE(:name1, name2) 

하지만 난 오류

ERROR: COALESCE types bytea and character varying 

name1의 유형 내 자바 코드에서 문자열입니다 있어요.

나는 그것은 이클립스에서 JUnit 테스트를 통과 할 문제를

COALESCE(convert_from(:name1,'UTF8'), name2) 

를 해결하기 위해 노력했다. 그러나 Tomcat에서 실행할 때 오류가 발생합니다.

Error:convert_from(character varying, unknown) not exist 

해결 방법은 무엇입니까? 감사.

+1

나는 Spring/Hibernate에 대해 많이 알지 못하지만, 두 값을 같은 타입으로 캐스트해야한다. 이것은 인코딩의 문제가 아닙니다. 'SELECT * FROM test WHERE name = COALESCE (캐스트 (name1 AS 텍스트), 캐스트 (name2 AS 텍스트))' –

+0

답장을 보내 주셔서 감사합니다. 'convert_from (문자가 다양하고 알려지지 않은) 존재하지 않음 '이 왜 발생하는지 물어볼 수 있습니까? 'COALESCE (convert_to (: name1, 'UTF8'), name2)'는 PgAdminIII에서 잘 작동합니다. 고마워 :) – LoveTW

+0

"name1"은 String이라고 언급 했으므로 "name2"도 String이 될 것이라고 나는 믿는다. SQL 실행을 위해 "쿼리"또는 "SQLQuery"하이버 네이트 인터페이스를 사용하고 있습니까? SQLQuery이어야합니다. – ms03

답변

3

나는 내 질문을 해결했습니다.

SELECT * FROM Test 
WHERE name = COALESCE(CAST(:name1 AS TEXT), name2) 

저에게 조언 해 주신 Erwin Brandstetter에게 감사드립니다.