एक वर्कर कॉलम की अधिकतम लंबाई बदलना?


188

मैं एक वर्ण स्तंभ की लंबाई को २५५ अक्षरों से ५०० तक सामग्री को खोए बिना अद्यतन करने का प्रयास कर रहा हूं। मैंने पहले भी टेबल्स को गिराया और फिर से बनाया है, लेकिन मैं कभी भी उस स्टेटमेंट से अवगत नहीं हुआ हूँ जो मुझे लगता है कि मुझे ऐसा करने के लिए उपयोग करने की आवश्यकता है। मुझे यहाँ दस्तावेज़ मिला: हालांकि टेरबल (ट्रांसफ़ैक्ट-एसक्यूएल) हालांकि मैं इसके प्रमुख या पूंछ नहीं बना सकता।

मेरे पास अब तक निम्नलिखित (अनिवार्य रूप से दुर्भाग्य से कुछ भी नहीं):

alter table [progennet_dev].PROGEN.LE
alter column UR_VALUE_3

मैं यह कैसे संपर्क करूं? क्या इस कथन के लिए बेहतर प्रलेखन है (मैंने एक उदाहरण कथन के लिए कुछ खोज की थी लेकिन खाली आया था)?

जवाबों:


362

आप की जरूरत है

ALTER TABLE YourTable ALTER COLUMN YourColumn <<new_datatype>> [NULL | NOT NULL]

लेकिन NOT NULLवांछित होने पर स्पष्ट रूप से निर्दिष्ट करना याद रखें ।

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NOT NULL;

यदि आप इसे नीचे की तरह अनिर्दिष्ट छोड़ दें ...

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500);

फिर कॉलम मूल रूप से परिभाषित किए जाने पर भी नल को अनुमति देने के लिए डिफ़ॉल्ट होगा NOT NULL। एक में विनिर्देश को छोड़ देना ALTER TABLE ... ALTER COLUMNहमेशा की तरह माना जाता है।

ALTER TABLE YourTable ALTER COLUMN YourColumn VARCHAR (500) NULL;

यह व्यवहार उस से अलग है जो नए कॉलम के लिए उपयोग किया जाता है ALTER TABLE(या CREATE TABLEसमय पर)। वहाँ डिफ़ॉल्ट अशक्तता ANSI_NULL_DFLTसेटिंग्स पर निर्भर करती है ।


क्या आप यहां '[NOT] NULL' जोड़ने का उद्देश्य बता सकते हैं? बस जिज्ञासा क्यों आपके जवाब में यह एक मिच नहीं है?
माइकल ए


इसलिए [NULL] यह निर्दिष्ट नहीं करता है कि NULL मान -नोट- को कॉलम में रखा जाए?
माइकल ए

3
@ मिसेल - चौकोर कोष्ठक के बिना, हाँ। वर्ग कोष्ठक इंगित करते हैं कि सिंटैक्स का बिट वैकल्पिक है। यदि आप इसे छोड़ देते हैं तो अनुमति NULLडिफ़ॉल्ट है।
मार्टिन स्मिथ

1
इसे सॉर्ट किया गया :) .. ALTER COLUMN MY_COL SET DATA TYPE VARCHAR (100)
Kdean571

26

स्तंभ का आकार बढ़ाने से ALTERकोई डेटा नहीं खोएगा:

alter table [progennet_dev].PROGEN.LE 
    alter column UR_VALUE_3 varchar(500) 

जैसा कि @Martin बताते हैं, स्पष्ट रूप से निर्दिष्ट करना याद रखें NULL | NOT NULL


14

आप उपयोग कर सकते हैं modify:

ALTER TABLE `table name` 
modify COLUMN `column name` varchar("length");

4
जो पहले से ही पोस्टेड था। क्या कुछ नया है जिसे आप साझा करना चाहते हैं?
निको हसे

इसके अलावा यह MySQL के लिए काम करता है और इस सवाल को टैग किया गया है [TSQL] तो यह गलत जगह पर है
jean

6
MODIFY क्या नया है। ALTER COLUMN ने मुझे एक सिंटैक्स त्रुटि दी लेकिन MODIFY COLUMN ने मेरे लिए बिना किसी समस्या के काम किया।
केजीबीआरडी

@KGBird - क्योंकि आप SQL सर्वर का उपयोग नहीं कर रहे हैं। MODIFYसवाल के बारे में कुछ अन्य डेटाबेस प्रणाली के लिए वाक्यविन्यास था
मार्टिन स्मिथ

1

इंटेलीज के अंदर मारिया-डीबी और डीबी-नेविगेटर टूल का उपयोग करते हुए, MODIFY कॉलम ने Alter Column के बजाय मेरे लिए काम किया


2
@ मिच व्हीट द्वारा 12 जनवरी '12 को 1:37 पर उपलब्ध कराए गए उत्तर से क्या नया जुड़ता है?
स्कोपचानोव

1
ALTER TABLE TABLE_NAME MODIFY COLUMN_NAME VARCHAR(40);

इस सवाल पर देर से - लेकिन मैं ओरेकल एसक्यूएल डेवलपर का उपयोग कर रहा हूं और @ अनाम का उत्तर निकटतम था, लेकिन जब तक मैंने इसे क्वेरी संपादित नहीं किया तब तक सिंटैक्स त्रुटियां प्राप्त करता रहा।

आशा है कि यह किसी की मदद करता है


(परिवर्तित संशोधित करने के लिए और स्तंभ के रूप में column_name को परिभाषित करने की आवश्यकता नहीं है)
Jett

0

मुझे भी संदेह हो रहा था कि मेरे लिए क्या काम है

ALTER TABLE `your_table` CHANGE `property` `property` 
VARCHAR(whatever_you_want) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL;  

0

इसने मेरे लिए db2 में काम किया:

alter table "JOBS"  alter column "JOB_TITLE" set  data type varchar(30);

0

एक विकल्प के रूप में, आप पुराने डेटा को सहेज सकते हैं और नए मापदंडों के साथ एक नई तालिका बना सकते हैं।

छवि देखें

SQL सर्वर प्रबंधन स्टूडियो में: "आपका डेटाबेस" => कार्य => जनरेटिंग => विशिष्ट डेटाबेस ऑब्जेक्ट का चयन करें => "अपनी तालिका" => उन्नत => स्क्रिप्ट के लिए डेटा के प्रकार - स्कीमा और डेटा => उत्पन्न।

निजी तौर पर, मैंने ऐसा किया।


-1

MariaDB के लिए, संशोधित कॉलम का उपयोग करें :

ALTER TABLE table_name MODIFY COLUMN column_name VARCHAR (500);

यह काम करेगा।


प्रश्न SQL सर्वर के बारे में है
मार्टिन स्मिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.