আপনি কীভাবে এসকিউএল সার্ভারে একটি কলামের ডেটাটাইপ পরিবর্তন করবেন?


340

আমি একটি থেকে একটি কলাম পরিবর্তন করার চেষ্টা করছি varchar(50)একটি থেকে nvarchar(200)। এই টেবিলটি পরিবর্তন করতে এসকিউএল আদেশ কী?

উত্তর:


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

সম্পাদনা হিসাবে উল্লিখিত NULL / NULL নির্দিষ্ট করা উচিত নয়, রবের উত্তরও দেখুন ।


1
কেন এটি নির্দিষ্ট করা উচিত? লাভ কী? আমি যা বলি তাই সব ছেড়ে দিতে চাই বলে আমার উল্লেখ করার দরকার নেই, আমি মনে করি।
অবিশ্বাস্য জানুয়ারি

5
@ থ্রিঙ্ক্রেডেবল জান এটি দুর্দান্ত হবে, তবে দুর্ভাগ্যক্রমে এটি সেভাবে কাজ করে না। যদি আপনি ALTER TABLE TableName ALTER COLUMN ColumnNameকোনও বিদ্যমান কলামটি পরিবর্তনের জন্য কোনও কমান্ড জারি করেন [NOT NULL]এবং আপনি এটি স্পষ্টভাবে নির্দিষ্ট না করে থাকেন তবে [NULL]এটি পূর্বনির্ধারিত হিসাবে হবে।
তাকরাল

4
এটি কেবল তখনই কাজ করে যদি আপনার column কলামটিতে বাধা এবং সূচক না থাকে, অন্যথায়, আপনাকে সমস্ত কিছু ফেলে ফেলা এবং এটি পুনরায় তৈরি করা দরকার, যা ক্লান্তিকর এবং উদ্বেগজনক কাজ, বিশেষত যদি সেই কলামটিতে আপনার অনেক বিদেশী রেফারেন্স থাকে। উদাহরণস্বরূপ যখন ক্ষুদ্রকায় থেকে ইনট মধ্যে পরিবর্তন।
Hrvoje Batrnek

আপনার আইডিই খোলা থাকলে (এসএসএমএসের মতো) যত্নশীল। এমনকি আমার ডিজাইনার ট্যাবটি টেবিলটিতে বন্ধ থাকায় আমি পরিবর্তন করছিলাম (স্ক্রিপ্টটি চালানোর পরে এবং "ডিজাইন" নির্বাচন করতে টেবিলের উপর ডান ক্লিক করার পরে) এটি এখনও পুরানো ডেটা প্রকারগুলি দেখিয়েছে! ম্যানেজমেন্ট স্টুডিওতে আমার সমস্ত ট্যাব বন্ধ করে এবং আবার ডিজাইন ভিউ খোলার পরে এটি শেষ পর্যন্ত আপডেট হওয়া ডেটাটাইপটি দেখিয়েছিল। খুব ভীতিজনক, তাই সাবধান হন (এটি এখনই সংশোধন করা ক্যাশে-বাগ হতে পারে বা কোনও এমএস কখনও ফিক্সিংয়ে বিরক্ত করে না)। আমি যখন ডিজাইন-ভিউ ব্যবহার করি তখন কেন আমি টি-এসকিউএল চালিয়েছিলাম তা ভাবতে, আমি আমার ডেটাটাইপগুলিতে SysName(যা এসএমএসের অনুমতি দেয় না) এটিকে পরিবর্তন করতে চেয়েছিলাম ।
মাইকটাইভি

এক্সএএমপিপিতে এই কমান্ডগুলির সাথে আমার ভাগ্য ছিল না। ALTER TABLE table MODIFY COLUMN column datatypeআমার জন্য কাজ।
পবিন্দু

173

অযোগ্যতা ভুলে যাবেন না।

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

2
অযোগ্যতা নিয়ে কী ব্যাপার? আমি যদি এটি পরিবর্তন করতে না চাই - এটি আবার সেট করে লাভ কী?
অবিশ্বাস্য জানুয়ারি

7
Table পরিবর্তনের টেবিল স্টেটমেন্টটি কী হওয়া উচিত তা নির্ধারণ না করে নির্বাহের কাজ শেষ করার পরে এটি NUL এ ডিফল্ট হবে।
sc305495

1
@ sc305495 ​​ঠিক বলতে গেলে, আপনার এএনএসআই_নুল_ডিএফএলএল সেটিংস হ'ল এটি ডিফল্ট হবে।
জিকাতো


13

এসকিউএল সার্ভারের একটি বিদ্যমান সারণীতে একটি ট্রাম্প সংশোধন করার সিনট্যাক্স (লেনদেন-এসকিউএল) হ'ল:

ALTER TABLE table_name
    ALTER COLUMN column_name column_type;

উদাহরণ স্বরূপ:

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

এই এসকিউএল সার্ভার ALTER TABLEউদাহরণটি last_nameএকটি ডেটা টাইপ হিসাবে পরিচিত কলামটি পরিবর্তন করবে এবং কলামটি VARCHAR(75)নাল মানকে অনুমতি দেবে না।

দেখতে এখানে


1
আপনার উত্তরে আরও তথ্য যুক্ত করুন এবং কোড / ক্যোয়ারী বিন্যাস করুন!
সেবাস্তিয়ান ব্রোশ 21

4

যতক্ষণ আপনি আপনার ভারচারের আকার বাড়িয়ে দিচ্ছেন আপনি ঠিক আছেন। অনুযায়ী ভুঁইয়া ছক রেফারেন্স:

কোনও কলামের নির্ভুলতা বা স্কেল হ্রাস করার ফলে ডেটা কাটা হতে পারে।



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

এটি বহু বছর আগে থেকেই বিদ্যমান গৃহীত উত্তরের চেয়ে কিছু যোগ করবে বলে মনে হয় না এবং আপনি টেবিলের কাঠামোয় যে পরিবর্তনগুলি পোস্ট করেছেন তা আসলে প্রশ্নের সাথে মেলে না।
পিটারজে

-11

এটা চেষ্টা কর:

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

1
"সংশোধন" স্পষ্টতই সঠিক নয়। অন্যান্য উত্তরের সাথে তুলনা করুন।
ফ্রাঙ্ক

3
এটি পুরানো, তবে দেখা যাচ্ছে যে কাই তাজার মাইএসকিউএল এবং / অথবা ওরাকল ডিডিএল প্রমান করছিলেন।
শেল্ডন কোহেন

1
শেল্ডনের সাথে সম্মত হোন, এখানে উত্তরগুলি আমাকে কেবল ওরাকল এসকিউএল সাহায্য করে নি, কেবল এটি
AsfK
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.