Programing

알 수없는 텍스트에서 텍스트로의 변환 함수를 찾지 못했습니다.

crosscheck 2020. 11. 22. 19:02
반응형

알 수없는 텍스트에서 텍스트로의 변환 함수를 찾지 못했습니다.


내 선택 문 중 하나에 다음 오류가 있습니다.

ERROR:  failed to find conversion function from unknown to text
********** Error **********
ERROR: failed to find conversion function from unknown to text
SQL state: XX000

이것은을 사용하여 쉽게 고칠 수 cast있었지만 왜 발생했는지 완전히 이해하지 못했습니다. 두 가지 간단한 진술로 내 혼란을 설명하겠습니다.

이것은 괜찮습니다.

select 'text'
union all
select 'text';

다음 오류가 반환됩니다.

with t as (select 'text')    
select * from t
union all
select 'text'

쉽게 고칠 수 있다는 것을 알고 있습니다.

with t as (select 'text'::text)    
select * from t
union all
select 'text'

두 번째 예에서 변환이 실패하는 이유는 무엇입니까? 내가 이해하지 못하는 논리가 있습니까? 아니면 PostgreSQL의 향후 버전에서 수정 될 예정입니까?

PostgreSQL 9.1.9

PostgreSQL 9.2.4 ( SQL Fiddle ) 에서 동일한 동작


Postgres는 컨텍스트에서 유형이 지정되지 않은 상수 유형을 감지 할 수 있다면 행복합니다. 그러나 컨텍스트가 불가능하고 쿼리가 사소한 것보다 조금 더 복잡 할 때이 메커니즘은 실패합니다. 이러한 규칙은 모든 SELECT 절에 고유하며 일부는 더 엄격하지만 일부는 그렇지 않습니다. 내가 말할 수 있다면, 오래된 루틴은 더 관대하고 (오라클과의 호환성이 높고 초보자에게 부정적인 영향이 적기 때문에), 현대는 덜 관대합니다 (유형 오류에 대한 더 높은 안전성으로 인해).

텍스트 상수와 같은 알 수없는 리터럴 상수로 작업하려는 일부 제안이 있었지만 더 많은 이유로 거부되었습니다. 그래서 저는이 분야에서 큰 변화를 기대하지 않습니다. 이 문제는 일반적으로 합성 테스트와 관련이 있으며 유형이 열 유형에서 추론되는 실제 쿼리와 관련이 없습니다.

참고 URL : https://stackoverflow.com/questions/18073901/failed-to-find-conversion-function-from-unknown-to-text

반응형