- 질문내용처럼 A라는 필드가 있을때 다음과 같이 UPDATE를 해봤는데 안되네요..
1) UPDATE table SET a=a+"str";
2) UPDATE table SET a=a || "str";
이게 맞는 문법인지 통감이 않오네요..
혹 merge 나 다른 함수를 써야 하나요?....
update table set a = a || 'str'
입니다.:)
음..자답입니다. 쿼리 문제가 아니였네요..
제가 잘못 썼는데 상기님 답변 처럼 했는데도 제대로 값이
들어가지 않는 문제였습니다.
update table set a=a || 'str';
위처럼 아무리해도 되지 않더군요.. 그러다가 문득...
update table set a='str' ;
을 수행한후에
을 진행하였더니 제대로 값이 입력이 되더군요.. a라는 칼럼이 text필드였는데 Postgresql 내부적으로 초기화 과정을 거치는 것이 아닌가 생각이 드네요...
참고로 쿼리가 실행이 되더라도 값에는 변함이 없네요.. 아마도 8.0의 버그가 아닌가 싶네요.
아... 초기화 과정이 아니라,
문자열 연산의 상식입니다.
null + 문자열 = null 입니다. ^^
그래서, a = a || 'str' 에서
더해지는 a 가 null 이라면 결과도 null 입니다.
즉, a 값이 널일때는 빈문자열 ('')로 처리하라는 예외처리를 해야합니다.
오라클의 nvl() 같이, PostgreSQL에서는 coalesce() 함수를 씁니다.
즉, null 까지 고려한 것이라면,
a = coalesce(a, '') || 'str'
이 되어야겠지요.