2011-06-08 8 views
5

मेरे पास 27 वर्कर फ़ील्ड वाली एक टेबल है। मैं सभी फ़ील्ड लोअरकेस बनाना चाहता हूं, लेकिन मैं इसे एक छोटे से MySQL कॉल में करना चाहता हूं।मैं एक कॉल में एक mysql तालिका में प्रत्येक फ़ील्ड पर केस कैसे बदलूं?

यह करता है एक भी क्षेत्र:

UPDATE table 
SET field = LOWER(field) 

मैं (जो काम नहीं करता है) इस के बराबर करना कैसे करते हैं:

UPDATE table 
SET * = LOWER(*) 
+1

एक अच्छा सवाल के +1:

यहाँ एक सुपर त्वरित PHP स्क्रिप्ट है कि एन क्षेत्रों (@alex विचार के लिए धन्यवाद) के लिए इस करता है। मुझे लगता है कि दुर्भाग्यपूर्ण जवाब यह है कि आप इसे * एक छोटी क्वेरी * के साथ नहीं कर सकते हैं। हम देखेंगे। –

+0

मुझे लगता है कि जिस तरह से आपको लगता है - अच्छा विचार :) – Bohemian

+1

'टेबल से दिखाएं कॉलम' और कुछ सर्वर साइड भाषा के बारे में क्या? – alex

उत्तर

3

आप अपने रचनात्मक प्रयास के साथ यह नहीं कर सकते SET * = LOWER(*) आदि

आप इसे इस तरह हालांकि कर सकते हैं:

UPDATE table SET 
column1 = LOWER(column1), 
column2 = LOWER(column2), 
-- etc, listing all text type columns 
columnN = LOWER(columnN); 

कारण "शॉर्टकट" का कारण शायद इसलिए नहीं है क्योंकि इस पैटर्न को इतनी बार आवश्यकता है।

+0

तो मैं सभी 27 क्षेत्रों को टाइप करने से नहीं बच सकता? –

+0

@ टी। ब्रायन जोन्स बीटीडब्ल्यू। 27 कॉलम होने का मतलब है कि आपका डेटाबेस खराब रूप से डिज़ाइन किया गया है। – Tadeck

+0

@Tadeck - दुख की बात है, मैं ऐसे क्लाइंट से बात कर रहा हूं जो मुझे पुराना डेटाबेस डंप दे रहा है जहां डीबी अब मौजूद नहीं है, इसलिए मैं अपने जंक आयात कर रहा हूं, और फिर इसे साफ कर रहा हूं। –

0

सर्वसम्मति यह है कि यह एक एकल mysql क्वेरी में नहीं किया जा सकता है।

$sql = "SHOW COLUMNS 
     FROM table"; 
$results = mysqli_query($dbcon,$sql); 
while($column = mysqli_fetch_assoc($results)) 
{ 
    $column = $column["Field"]; 
    $sql = "UPDATE table 
      SET $column = LOWER($column)"; 
    $success = mysqli_query($dbcon,$sql); 
} 
+0

आपके मूल प्रश्न में सर्वर-साइड तकनीक का उपयोग नहीं किया गया है। लेकिन हाँ, आक्रामक यद्यपि यह एक संभावित समाधान है। –

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