MySQL函数按字母顺序排序字符串

问题描述:

我想知道是否有一种方法可以将字符串(varchar)传递给MySQL中的(自定义)函数,然后让它输出按字母顺序排列的字符串。我不确定你将如何重新排序字符串。MySQL函数按字母顺序排序字符串

IN : dbca 
OUT: abcd 

人们可能会定义一个可以做到这一点的存储函数,但它会相当尴尬和低效。这没有利用SQL的优势。

但是,它会在许多动态编程语言很简单:

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

如果有这样的功能,我会很惊讶。没关系,你可以实施你的own functions

您将无法通过SQL直接执行此操作;您必须从编程语言中执行SELECTUPDATE

我决定采取比尔的例子,这是我想出了:

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

    return implode($mySortedArray); 
} 

环直到所有记录更新:

$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

酷!仅供参考,您不需要'$ stmt = new PDOStatement;'因为'prepare()'创建一个语句。 – 2009-08-22 21:47:57

+0

我认为我这样做是因为如果你没有这样做,那么以前PHP中存在一个bug。现在可能已经修复了。不过谢谢。 – 2009-08-22 22:14:24