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

वर्चर फ़ील्ड के प्रकार को पूर्णांक में बदलें:पूर्णांक टाइप करने के लिए स्वचालित रूप से कास्ट नहीं किया जा सकता

text . से कोई अंतर्निहित (स्वचालित) कास्ट नहीं है या varchar से integer (यानी आप varchar . पास नहीं कर सकते integer . की अपेक्षा वाले फ़ंक्शन के लिए या एक varchar असाइन करें एक integer . के लिए फ़ील्ड one), इसलिए आपको ALTER TABLE ... ALTER COLUMN ... TYPE ... USING:

का उपयोग करके एक स्पष्ट कास्ट निर्दिष्ट करना होगा।
ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (col_name::integer);

ध्यान दें कि आपके टेक्स्ट फ़ील्ड में व्हाइटस्पेस हो सकता है; उस स्थिति में, उपयोग करें:

ALTER TABLE the_table ALTER COLUMN col_name TYPE integer USING (trim(col_name)::integer);

परिवर्तित करने से पहले सफेद स्थान छीनने के लिए।

यदि कमांड psql . में चलाया गया था, तो यह एक त्रुटि संदेश से स्पष्ट है , लेकिन यह संभव है कि PgAdmin-III आपको पूरी त्रुटि नहीं दिखा रहा है। अगर मैं इसका परीक्षण psql . में करता हूं, तो यहां क्या होता है? PostgreSQL 9.2 पर:

=> CREATE TABLE test( x varchar );
CREATE TABLE
=> insert into test(x) values ('14'), (' 42  ');
INSERT 0 2
=> ALTER TABLE test ALTER COLUMN x TYPE integer;
ERROR:  column "x" cannot be cast automatically to type integer
HINT:  Specify a USING expression to perform the conversion. 
=> ALTER TABLE test ALTER COLUMN x TYPE integer USING (trim(x)::integer);
ALTER TABLE        

USING जोड़ने के लिए धन्यवाद @muistooshort लिंक।

यह भी देखें संबंधित प्रश्न; यह रेल प्रवास के बारे में है, लेकिन अंतर्निहित कारण वही है और उत्तर लागू होता है।

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



  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. PostgreSQL में दो डेटाबेस के बीच डेटा की तुलना कैसे करें?

  3. एकाधिक पंक्तियों को अद्यतन करते समय नल प्रकार कास्टिंग

  4. एक एसक्यूएल परिणाम ट्रांसपोज़ करना ताकि एक कॉलम एकाधिक कॉलम पर जा सके

  5. पोस्टग्रेज इंस्टालेशन डेटाबेस क्लस्टर इनिशियलाइज़ेशन विफल (Postgresql संस्करण 9.4.4)