PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

PostgreSQL:त्रुटि:ऑपरेटर मौजूद नहीं है:पूर्णांक =वर्ण भिन्न

मुझे लगता है कि यह आपको बता रहा है कि वास्तव में क्या गलत है। आप एक पूर्णांक की तुलना वर्चर से नहीं कर सकते। PostgreSQL सख्त है और आपके लिए कोई जादुई टाइपकास्टिंग नहीं करता है। मुझे लगता है कि SQLServer स्वचालित रूप से टाइपकास्टिंग करता है (जो एक बुरी बात है)।

यदि आप इन दो अलग-अलग जानवरों की तुलना करना चाहते हैं, तो आपको कास्टिंग सिंटैक्स का उपयोग करके एक को दूसरे में डालना होगा ::

इन पंक्तियों के साथ कुछ:

create view view1
as 
select table1.col1,table2.col1,table3.col3
from table1 
inner join
table2 
inner join 
table3
on 
table1.col4::varchar = table2.col5
/* Here col4 of table1 is of "integer" type and col5 of table2 is of type "varchar" */
/* ERROR: operator does not exist: integer = character varying */
....;

varchar पर ध्यान दें टेबल पर टाइपकास्टिंग1.col4.

यह भी ध्यान दें कि टाइपकास्टिंग संभवतः उस कॉलम पर आपकी अनुक्रमणिका को अनुपयोगी प्रस्तुत कर सकता है और इसमें प्रदर्शन जुर्माना है, जो बहुत खराब है। एक बेहतर समाधान यह देखना होगा कि क्या आप दो कॉलम प्रकारों में से एक को दूसरे से मिलान करने के लिए स्थायी रूप से बदल सकते हैं। सचमुच अपना डेटाबेस डिज़ाइन बदलें।

या आप कस्टम, अपरिवर्तनीय . का उपयोग करके कास्ट किए गए मानों पर एक अनुक्रमणिका बना सकते हैं फ़ंक्शन जो कॉलम पर मान डालता है। लेकिन यह भी सब-ऑप्टिमल साबित हो सकता है (लेकिन लाइव कास्टिंग से बेहतर)।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Postgresql:केवल तालिका कैसे बनाएं यदि यह पहले से मौजूद नहीं है?

  2. Django ORM PostgreSQL अनुक्रमों को गलत तरीके से पढ़ रहा है?

  3. 50 मील दूर कैक्यूलेट पॉइंट (उत्तर, 45% पूर्वोत्तर, 45% दप)

  4. विदेशी सर्वर में शामिल होने/दबाने से पहले सबक्वायरी के मूल्यांकन को कैसे बाध्य करें

  5. PostgreSQL में 'ऑर्डर' पर या उसके पास सिंटैक्स त्रुटि