SQL सर्वर में किसी कॉलम के डेटाटाइप को कैसे बदलते हैं?


जवाबों:


564
ALTER TABLE TableName 
ALTER COLUMN ColumnName NVARCHAR(200) [NULL | NOT NULL]

EDIT जैसा कि उल्लेख किया गया है कि NULL / NOT NULL को निर्दिष्ट नहीं किया जाना चाहिए, रोब का जवाब भी देखें।


1
इसे क्यों निर्दिष्ट किया जाना चाहिए? क्या फायदा है? सब कुछ मैं इसे छोड़ना चाहता हूं जैसा कि मुझे उल्लेख नहीं करना है, मुझे लगता है।
अविश्वसनीय जान

5
@ TheincredibleJan यह अच्छा होगा, लेकिन दुर्भाग्य से यह उस तरह से काम नहीं करता है। यदि आप ALTER TABLE TableName ALTER COLUMN ColumnNameमौजूदा स्तंभ को बदलने के लिए एक आदेश जारी [NOT NULL]करते हैं, और आप इसे स्पष्ट रूप से निर्दिष्ट नहीं करते हैं, तो यह [NULL]बाद में होगा , क्योंकि यह डिफ़ॉल्ट है।
टेकलैर

4
यह केवल तभी काम करता है जब आपके पास उस स्तंभ पर बाधाएं और अनुक्रमणिका नहीं हैं, अन्यथा, आपको सब कुछ छोड़ने और इसे फिर से बनाने की आवश्यकता है, जो थकाऊ और गंभीर काम है, खासकर यदि आपके पास उस स्तंभ पर कई विदेशी संदर्भ हैं। जैसे जब छोटे से इंट में बदल रहा है।
१n पर हिरोवे बटरनेक

अगर आपके पास आईडीई खुला है (एसएसएमएस की तरह) तो सावधान। यहां तक ​​कि मेरे डिजाइनर टैब के साथ मैं टेबल पर बंद कर रहा था (स्क्रिप्ट चलाने के बाद और "डिज़ाइन" का चयन करने के लिए टेबल पर राइट-क्लिक करने के बाद) यह अभी भी पुराने डेटा प्रकारों को दिखाता है! यह प्रबंधन स्टूडियो में मेरे सभी टैब को बंद करने और डिज़ाइन व्यू को फिर से खोलने के बाद ही अपडेटेड डेटा टाइप दिखा। बहुत डरावना है, इसलिए सावधान रहें (यह एक कैश-बग हो सकता है जो अब तक तय हो गया है या एक एमएस कभी फिक्सिंग को परेशान नहीं करता है)। डिज़ाइन-व्यू का उपयोग करने पर मैं सोचता हूं कि मैं टी-एसक्यूएल क्यों चला रहा हूं, मैं अपने डेटाटाइप्स को बदलना चाहता था SysName(जो एसएसएमएस अनुमति नहीं देता है)।
माइकेटीवी

मुझे XAMPP में इन कमांड के साथ कोई भाग्य नहीं था। ALTER TABLE table MODIFY COLUMN column datatypeमेरे लिए काम किया।
पाविन्दु

173

अशक्तता मत भूलना।

ALTER TABLE <schemaName>.<tableName>
ALTER COLUMN <columnName> nvarchar(200) [NULL|NOT NULL]

2
अशक्तता के साथ मामला क्या है? अगर मैं इसे बदलना नहीं चाहता - तो इसे फिर से स्थापित करने में क्या लाभ है?
अविश्वसनीय जान

7
^ परिवर्तन तालिका विवरण के स्पष्ट रूप से परिभाषित किए बिना निष्पादित किए जाने के बाद यह NULL के लिए डिफ़ॉल्ट होगा कि यह क्या होना चाहिए।
sc305495

1
@ sc305495 ​​सटीक होने के लिए, यह आपकी ANSI_NULL_DEFAULT सेटिंग को डिलेवर करने के लिए डिफ़ॉल्ट होगा।
ज़िकैटो

23

ऑल्टर टेबल स्टेटमेंट का उपयोग करें।

Alter table TableName Alter Column ColumnName nvarchar(100)

13

SQL सर्वर (Transact-SQL) में एक मौजूदा तालिका में एक कॉलम को संशोधित करने का सिंटैक्स है:

ALTER TABLE table_name
    ALTER COLUMN column_name column_type;

उदाहरण के लिए:

ALTER TABLE employees
    ALTER COLUMN last_name VARCHAR(75) NOT NULL;

यह SQL सर्वर ALTER TABLEउदाहरण last_nameडेटा प्रकार होने के लिए स्तंभ को संशोधित करेगा VARCHAR(75)और स्तंभ को शून्य मानों की अनुमति नहीं देने के लिए मजबूर करेगा।

यहाँ देखें


1
कृपया अपने उत्तर में अधिक जानकारी जोड़ें और कोड / क्वेरी को प्रारूपित करें!
सेबस्टियन ब्रोच

4

जब तक आप अपने varchar का आकार बढ़ा रहे हैं तब तक आप ठीक हैं। के अनुसार ऑल्टर टेबल संदर्भ:

एक स्तंभ की सटीकता या पैमाने को कम करने से डेटा ट्रंकेशन हो सकता है।


3

डेटा प्रकार बदलने के लिए

alter table table_name 
alter column column_name datatype [NULL|NOT NULL]

प्राथमिक कुंजी बदलने के लिए

ALTER TABLE table_name  
ADD CONSTRAINT PK_MyTable PRIMARY KEY (column_name)

1
ALTER TABLE [dbo].[TableName]
ALTER COLUMN ColumnName VARCHAR(Max) NULL

यह वर्षों पहले से मौजूदा स्वीकार किए गए उत्तर पर कुछ भी जोड़ने के लिए प्रतीत नहीं होता है, और तालिका संरचना में आपके द्वारा पोस्ट किए गए परिवर्तन वास्तव में प्रश्न से मेल नहीं खाते हैं।
पीटरजे

-11

इसे इस्तेमाल करे:

ALTER TABLE "table_name"
MODIFY "column_name" "New Data Type";

1
"संशोधित करें" स्पष्ट रूप से सही नहीं है। कृपया अन्य उत्तरों के साथ तुलना करें।
फ्रैंक

3
यह पुराना है, लेकिन ऐसा प्रतीत होता है कि काई टीज़र MySql और / या Oracle DDLs साबित हो रहा था।
शेल्डन कोहेन

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