2012-11-23 16 views
17

क्या इसमें डेटा के साथ कॉलम को TEXT से VARCHAR(X) पर आसानी से परिवर्तित करने का कोई तरीका है? कॉलम में कोई मौजूदा रिकॉर्ड X से अधिक नहीं है।टेक्स्ट प्रकार से VARCHAR के कॉलम को कैसे परिवर्तित करें?

उत्तर

30

हाँ के लिए यकीन है कि

ALTER TABLE table_name MODIFY column_name VARCHAR(X)

+0

आपके सुपर त्वरित उत्तर के लिए बहुत बहुत धन्यवाद :) – user1768076

4

एमएस एसक्यूएल के लिए:

ALTER TABLE table_name 
ALTER COLUMN column_name datatype(value) 

MySQL

ALTER TABLE table_name 
MODIFY column_name datatype(value) 
+1

पी फिर से 'डेटाटाइप (मान)' लक्ष्य प्रकार है और स्रोत प्रकार नहीं है? – ArtB

+0

सही, मुझे इसके बारे में थोड़ा स्पष्ट होना चाहिए था। –

0

के लिए मैं अपने डीबी की बड़े पैमाने पर बदलाव के लिए इस्तेमाल किया। इसे निष्पादित करें, फिर सभी पंक्तियों की प्रतिलिपि बनाएँ, क्वेरी फ़ील्ड में पेस्ट करें, हेडर हटाएं और चलाएं।

इंजन को बदलने, CHARSET और डीबी में सभी तालिकाओं = itsd का मिलान:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," ENGINE=INNODB, 
CHARSET=utf8, COLLATE=utf8_general_ci;") AS ExecuteTheString 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="itsd" 
    AND TABLE_TYPE="BASE TABLE"; 

डीबी = itsd में कन्वर्ट CHARSET और सभी तालिकाओं का मिलान:

SELECT CONCAT("ALTER TABLE ", TABLE_SCHEMA, '.', TABLE_NAME," CONVERT TO 
CHARACTER SET utf8;") AS ExecuteTheString 
FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_SCHEMA="itsd" 
    AND TABLE_TYPE="BASE TABLE"; 

VARCHAR के सभी टेक्स्ट फ़ील्ड बदलें (255) डीबी = itd:

SELECT CONCAT('ALTER TABLE ', table_schema, '.', table_name, ' MODIFY COLUMN ', 
column_name, ' VARCHAR(255);') 
FROM information_schema.columns 
WHERE TABLE_SCHEMA = 'itsd' 
    AND DATA_TYPE = 'text' 
    AND TABLE_TYPE="BASE TABLE"; 
संबंधित मुद्दे