मेरी चुनिंदा बयानों मैं निम्न त्रुटि मिल गया है में से एक में अज्ञात से रूपांतरण समारोह ढूंढने में विफल:पाठ में
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) पर एक ही व्यवहार
मैं देखता हूं। मुझे वास्तविक जीवन में अक्सर इस मुद्दे का सामना करना पड़ता है। हम विश्लेषिकी/द्वि/डेटा खनन और untyped स्थिरांक के संघ के लिए PostgreSQL का उपयोग कर रहे हैं आम है। लेकिन जैसा कि मैंने कहा, इसे कास्ट करना आसान है। –
मुझे संख्यात्मक अक्षर जैसे '1 :: int' क्यों नहीं डालना है? –
@IainElder - संख्यात्मक प्रकार छोटे वर्ग होते हैं - किसी भी शाब्दिक स्थिर (जिसे "अज्ञात" के रूप में नामित किया जाता है) को किसी भी प्रकार के नंबर पर डाला जा सकता है - संख्या नहीं - तो पाप ('2.34') काम कर रहा है, लेकिन लंबाई (1) नहीं –