상세 컨텐츠

본문 제목

postgreSQL 쿼리문 타입 오류

IT/SQL

by SINAFLA 2021. 6. 6. 21:56

본문

반응형
- postgreSQL로 쿼리를 작성해야 하는 경우가 있어서 위의 쿼리를 작성 후 실행을 한 결과 아래와 같은 에러가 났다.
 
 
SQL Error [42883]: 오류: 연산자 없음: bigint = text
 
org.jkiss.dbeaver.model.sql.DBSQLException: SQL Error [42883]: 오류: 연산자 없음: bigint = text Hint: 지정된 이름 및 인자 형식과 일치하는 연산자가 없습니다. 명시적 형변환자를 추가해야 할 수도 있습니다. Position: 442 at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:135) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeStatement(SQLQueryJob.java:492) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.lambda$0(SQLQueryJob.java:427) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:170) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.executeSingleQuery(SQLQueryJob.java:419) at org.jkiss.dbeaver.ui.editors.sql.execute.SQLQueryJob.extractData(SQLQueryJob.java:779) at org.jkiss.dbeaver.ui.editors.sql.SQLEditor$QueryResultsContainer.readData(SQLEditor.java:2973) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.lambda$0(ResultSetJobDataRead.java:111) at org.jkiss.dbeaver.model.exec.DBExecUtils.tryExecuteRecover(DBExecUtils.java:170) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetJobDataRead.run(ResultSetJobDataRead.java:109) at org.jkiss.dbeaver.ui.controls.resultset.ResultSetViewer$17.run(ResultSetViewer.java:3584) at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:104) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63) Caused by: org.postgresql.util.PSQLException: 오류: 연산자 없음: bigint = text Hint: 지정된 이름 및 인자 형식과 일치하는 연산자가 없습니다. 명시적 형변환자를 추가해야 할 수도 있습니다. Position: 442 at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2440) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2183) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:308) at org.postgresql.jdbc.PgStatement.executeInternal(PgStatement.java:441) at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:365) at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:307) at org.postgresql.jdbc.PgStatement.executeCachedSql(PgStatement.java:293) at org.postgresql.jdbc.PgStatement.executeWithFlags(PgStatement.java:270) at org.postgresql.jdbc.PgStatement.execute(PgStatement.java:266) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.execute(JDBCStatementImpl.java:342) at org.jkiss.dbeaver.model.impl.jdbc.exec.JDBCStatementImpl.executeStatement(JDBCStatementImpl.java:132) ... 12 more
 
 
타입에 대한 에러 메시지의 내용이더라. 검색 조건에 t.sn_cod와 t.max_sn_cod의 타입이 달라서 나는 오류다.
그래서 해결 방법을 찾아보니깐 타입을 맞춰주면 에러를 해결 방법을 찾았다.
 
Casting 방법
 
1. CAST() 
- SQL 표준으로 사용되는 CAST()를 사용하는 방법니다. 
 
예) CAST(1234 AS TEXT)
 
2. postgreSQL의 ::
- postgrelSQL에서는 타입변환을 제공해주는 게 있다. 변환하고 싶은 컬럼의 라인의 끝에 변환하고 싶은 타입을 붙여주면 해당 컬럼은 변환되는 타입으로 변환된다.
 
예) 1234::TEXT
 
 
그래서 아래의 그림과 같이 postgreSQL에서 제공해주는 형변환으로 위의 에러를 해결했다.
 
 
 
반응형

'IT > SQL' 카테고리의 다른 글

[JPA] could not instance id generator  (0) 2021.07.22
[Mytabis] Mybatis에서 currval() 사용 안 하는 이유  (0) 2021.05.04

관련글 더보기

댓글 영역