728x90
반응형
select trunc(credit_rt::numeric,2) from tb_opt10001
음 일단 credit_rt는 double precision 형이다.
처음엔 해당 컬럼을 소숫점을 2번째 자리까지 저장하도록 컬럼을 수정하고 싶었다.
그런데... 그런기능이 없다.
numeric으로 컬럼 사이즈를 지정하면 자릿수를 지정할수 있으나 다른 타입은 지정할수가 없다고 한다.
그래서 numeric으로 타입을 바꿀까 했는데 전체 자릿수 지정을 어떻게 할지 고민도 되고
그리고 무엇보다 numeric으로 하면 느리다고 한다.
그런데 또 돈이면 numeric으로 하라고 하는데.
일단 속도가 문제라.
저장은 소수점끝까지 가고 조회할때 2자리를 끊으려고 했다.
그런데 웃긴게 trunc(버림)가 또 numeric 타입에만 지원한단다.
그래서 최종이
select credit_rt,
trunc(credit_rt::numeric,2) from tb_opt10001
이렇게 되었다. ::numberic 이것이 형변환 같다.!!
그런데 go에서 gin 프레임워크라 sqlx를 사용해서 namedquery를 사용해서 파라미터 이름 바인딩 :명
이런식으로 쓰고 있어서 문제가 되어서 다른 cast를 써야햇다.
select credit_rt,
TRUNC(CAST(credit_rt as numeric),2) from tb_opt10001
이렇게 해서 했는데 go에서 에러는 안나는데 기대한 숫자가 나오는게 아니라 깨진 문자가 나왔다.
db에서는 정상적으로 쿼리가 되었다. 그래서 한번더 double precision으로 캐스트 했다.
select credit_rt,
CAST(TRUNC(CAST(credit_rt as numeric),2) AS double precision) credit_rt
from tb_opt10001
출처 : https://jijs.tistory.com/entry/postgresql-%EC%86%8C%EC%88%AB%EC%A0%90-2%EC%9E%90%EB%A6%AC
728x90
반응형
'Study > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] 문자열 합치기(concat , ||) (0) | 2023.05.22 |
---|---|
[PostgreSQL] 조건에 따라 다른값 보여주기 (CASE WHEN ~ ELSE ~ END) (0) | 2023.05.15 |
[postgreSQL] 날짜/시간 함수 (1) | 2023.04.11 |
[POSTGRES] 여러개의 행 하나의 행으로 표현하기 (0) | 2023.03.28 |
[PostgreSQL] COALESCE 함수 (Null 체크) (0) | 2022.11.25 |
댓글