वर्गाकार से पूर्णांक (SQL स्थिति: 22P02) में स्तंभ डेटा प्रकार को pgAdmin में बदलने की कोशिश कर रहा है
मैं पोस्टग्रेज स्क्रिप्ट के इस बिट को चलाने के character varying
लिए एक कॉलम को डेटा प्रकार के साथ बदलने की कोशिश कर रहा हूं integer
:
ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);
और मुझे यह त्रुटि मिली:
त्रुटि: पूर्णांक के लिए अमान्य इनपुट सिंटैक्स: "XX" SQL स्थिति: 22P02
कृपया इस मुद्दे को हल करने के लिए कोई मेरी मदद कर सकता है?
जवाब
आपके द्वारा प्राप्त की गई त्रुटि के आधार पर ऐसा लगता है कि आपके पास कुछ मूल्य हैं XX
जिन्हें एक में परिवर्तित नहीं किया जा सकता है integer
। जारी करने से पहले आपको उन मूल्यों को सुधारना होगा alter table
।
इस क्वेरी के साथ अपने गलत मूल्य खोजें:
select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';
!~
है NOT
regex मैच। रेग्ज एंकर मूल्य के साथ शुरुआत करता है ^
, एक वैकल्पिक माइनस साइन के लिए -{0,1}
खाता है, जो शून्य या एक हाइफ़न वर्ण से मेल खाता है, और फिर यह सुनिश्चित करता है कि मूल्य के अंत तक शेष वर्ण सभी अंकों के साथ हैं \d+$
।
XX
इस पैटर्न से मेल खाने में विफल रहने वाले किसी भी मान को पुनर्प्राप्त किया जाएगा, और आप यह पता लगा सकते हैं कि टेबल को अपडेट करके या using
अपने हिस्से को संशोधित करके उनके साथ कैसे व्यवहार करें alter table
।