2012-06-11 24 views
10

मैं एक SQL डेटाबेस पर काम कर रहा हूं, मेरे पास "मूल्य" नामक कॉलम है। जब डेटाबेस बनाया गया था तो "मूल्य" को NVARCHAR पर सेट किया गया था, मुझे डेटाबेस में डेटा खोए बिना decimal(18, 2) पर अपना प्रकार बदलना होगा। यह एक एसक्यूएल स्क्रिप्टडेटा खोने के बिना कॉलम प्रकार बदलें

द्वारा किया जाना चाहिए, मैंने एक नया कॉलम बनाने, डेटा को स्थानांतरित करने, पुराने कॉलम को हटाने और फिर नए बनाए गए कॉलम का नाम बदलने का विचार किया।

क्या कोई मुझे इस बारे में उदाहरण के साथ मदद कर सकता है कि यह कैसे करें? SQL में पार्स स्ट्रिंग को दशमलव में भी कोई फ़ंक्शन है?

धन्यवाद

+0

के साथ नया नाम बदलें, क्या आपने ऐसा करने के बारे में कुछ शोध किया है? आपको क्या मिला है और आप कहां फंस गए हैं? – Pablo

उत्तर

14

आप एक नया स्तंभ दो बार जोड़ने के लिए, बस एक नया अद्यतन करने के बाद वर्ष एक को निकालने की जरूरत नहीं है:

ALTER TABLE table_name ADD new_column_name decimal(18,2) 

update table_name 
set new_column_name = convert(decimal(18,2), old_column_name) 

ALTER TABLE table_name DROP COLUMN old_column_name 

ध्यान दें कि यदि old_column_name सांख्यिक, नहीं है convert विफल हो सकता है।

+5

गुम चरण जहां आप new_column_name को old_column_name में बदलते हैं, अभी भी +1 –

0

आप प्रबंधन स्टूडियो का उपयोग करके उन परिवर्तनों को दृष्टि से बना सकते हैं। फिर, आपके द्वारा किए गए परिवर्तनों के लिए स्क्रिप्ट प्राप्त करने के लिए "जेनरेट चेंज स्क्रिप्ट" बटन का उपयोग करें। मामले में कुछ गलत हो जाता मूल ddbb की एक प्रति के सभी परीक्षण करने के लिए सुनिश्चित करें, ..

+0

नोट - यह कैसे ढूंढें: http://stackoverflow.com/questions/6247556/generate-changes-script –

2

कुछ की तरह

ऑल्टर टेबल [MyTable] जोड़ें कॉलम NewPrice दशमलव (18,2) अशक्त

तब

अद्यतन [MyTable] NewPrice = Convert (दशमलव (18,2), [मूल्य]) सेट कहाँ मूल्य अशक्त

ऊपर तो विफल रहता है तो आप इसे मांस के लिए ऊपर से निपटने के लिए की आवश्यकता होगी नहीं है funnies

एक बार जब आप खुश हो जाते हैं तो पुरानी कॉलम को ऑल्टर टेबल के साथ छोड़ दें और sp_rename

संबंधित मुद्दे