2009-08-22 6 views

Répondre

2

On pourrait probablement définir une fonction stockée qui pourrait faire cela, mais ce serait plutôt gênant et inefficace. Cela ne profite pas des points forts de SQL.

Cependant, il serait simple dans de nombreux langages de programmation dynamiques:

<?php 
$in = "dbca"; 
$out = str_split($in); 
sort($out); 
print_r($out); 
2

Je serais surpris s'il y avait une telle fonction. Peu importe, vous pouvez implémenter votre own functions.

2

Vous ne pourrez pas le faire directement via SQL; vous devrez faire un SELECT et UPDATE à partir d'un langage de programmation.

0

j'ai décidé de prendre l'exemple de Bill et ce que je suis venu avec:

function orderAlpha($letters) 
{ 
    $mySortedArray = str_split($letters); 
    sort($mySortedArray); 

    return implode($mySortedArray); 
} 

boucle jusqu'à ce que tous les enregistrements soient mis à jour:

$stmt = new PDOStatement(); 
$stmt = $dbh->prepare("SELECT word FROM words WHERE ordered IS NULL LIMIT 1"); 
$stmt->execute(); 

if ($stmt->rowCount() > 0) { 
    $result = $stmt->fetchAll(); 
    $word = $result[0]['word']; 
    $orderedWord = orderAlpha($word); 
    $stmt2 = new PDOStatement(); 
    $stmt2 = $dbh->prepare("UPDATE words SET ordered = :orderedWord WHERE word = :word"); 

    $stmt2->bindParam(':orderedWord', $orderedWord, PDO::PARAM_STR); 
    $stmt2->bindParam(':word', $word, PDO::PARAM_STR); 
    $stmt2->execute(); 
} 
+0

Cool! Pour info, vous n'avez pas besoin de '$ stmt = new PDOStatement;' car 'prepare()' crée une instruction. –

+0

Je pense que je le fais parce qu'il y avait un bug dans PHP si vous ne le faisiez pas. C'est probablement réglé maintenant. Merci quand même. –

Questions connexes