वर्गाकार से पूर्णांक (SQL स्थिति: 22P02) में स्तंभ डेटा प्रकार को pgAdmin में बदलने की कोशिश कर रहा है

Aug 16 2020

मैं पोस्टग्रेज स्क्रिप्ट के इस बिट को चलाने के character varyingलिए एक कॉलम को डेटा प्रकार के साथ बदलने की कोशिश कर रहा हूं integer:

ALTER TABLE tbl.test ALTER COLUMN "XX" TYPE integer USING ("XX"::integer);

और मुझे यह त्रुटि मिली:

त्रुटि: पूर्णांक के लिए अमान्य इनपुट सिंटैक्स: "XX" SQL स्थिति: 22P02

कृपया इस मुद्दे को हल करने के लिए कोई मेरी मदद कर सकता है?

जवाब

3 MikeOrganek Aug 16 2020 at 12:21

आपके द्वारा प्राप्त की गई त्रुटि के आधार पर ऐसा लगता है कि आपके पास कुछ मूल्य हैं XXजिन्हें एक में परिवर्तित नहीं किया जा सकता है integer। जारी करने से पहले आपको उन मूल्यों को सुधारना होगा alter table

इस क्वेरी के साथ अपने गलत मूल्य खोजें:

select "XX" from tbl.test where "XX" !~ '^-{0,1}\d+$';

!~है NOTregex मैच। रेग्ज एंकर मूल्य के साथ शुरुआत करता है ^, एक वैकल्पिक माइनस साइन के लिए -{0,1}खाता है, जो शून्य या एक हाइफ़न वर्ण से मेल खाता है, और फिर यह सुनिश्चित करता है कि मूल्य के अंत तक शेष वर्ण सभी अंकों के साथ हैं \d+$

XXइस पैटर्न से मेल खाने में विफल रहने वाले किसी भी मान को पुनर्प्राप्त किया जाएगा, और आप यह पता लगा सकते हैं कि टेबल को अपडेट करके या usingअपने हिस्से को संशोधित करके उनके साथ कैसे व्यवहार करें alter table