2011-06-08 17 views
5

27 varchar alanlı bir tablom var. Tüm alanları küçük harflerle yapmak istiyorum ama bunu kısa bir mysql çağrısında yapmak istiyorum.Bir aramada mysql tablosundaki her alandaki durumu nasıl değiştirebilirim?

Bu does tek bir alan: Ben bu eşdeğer (hangi çalışmıyor) Nasılsınız

UPDATE table 
SET field = LOWER(field) 

:

UPDATE table 
SET * = LOWER(*) 
+1

+1:

İşte N alanlar (@alex fikir için teşekkürler) için bunu yapar süper hızlı PHP script. Ben talihsiz cevap düşünüyorum * bir kısa sorgu * ile yapamazsınız. Göreceğiz. –

+0

Düşündüğün gibi düşünüyorum - güzel bir fikir :) – Bohemian

+1

Tablodan ve bazı sunucu tarafındaki dilden 'GÖSTER KOLLARINI GÖSTER? – alex

cevap

3

Sen yaratıcı girişimi ile bunu yapamaz SET * = LOWER(*) vb

Sen böyle yapmak ancak yapabilirsiniz:

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

"Kısayol" olmaması sebebi muhtemelen bu desenin nadiren gerekli olması.

+0

Yani 27 alanın hepsini yazmayı tercih edemem? –

+0

@ T.BrianJones Btw. 27 sütuna sahip olmak, muhtemelen veritabanınızın zayıf bir şekilde tasarlandığı anlamına gelir. – Tadeck

+0

@Tadeck - Ne yazık ki, eski veritabanı veritabanı dbs artık mevcut olmayan bir istemci ile uğraşıyoruz, bu yüzden onların çöpleri ithal sıkışmış ve daha sonra temizlik. –

0

Mutabakat, bunun tek bir mysql sorgusunda yapılamamasıdır. İyi bir soru için

$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

Özgün soru, sunucu tarafındaki bir teknolojiden bahsetmedi. Ama evet, bu agresif olsa da potansiyel bir çözümdür. –

İlgili konular