Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL函数按字母顺序排列字符串_Mysql_String - Fatal编程技术网

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

MySQL函数按字母顺序排列字符串,mysql,string,Mysql,String,我想知道是否有一种方法可以将字符串(varchar)传递给MySQL中的(自定义)函数,然后让它按字母顺序输出字符串。我不确定您将如何重新排列字符串 IN : dbca OUT: abcd 如果有这样的功能,我会感到惊讶。没关系,您可以实现您的。您无法通过SQL直接实现这一点;您必须从编程语言中执行选择和更新。可以定义一个存储函数来执行此操作,但这将非常笨拙且效率低下。这并没有利用SQL的优势 但是,在许多动态编程语言中,它都很简单: <?php $in = "dbca"; $out =

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

IN : dbca
OUT: abcd

如果有这样的功能,我会感到惊讶。没关系,您可以实现您的。

您无法通过SQL直接实现这一点;您必须从编程语言中执行
选择
更新

可以定义一个存储函数来执行此操作,但这将非常笨拙且效率低下。这并没有利用SQL的优势

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

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

我决定以比尔为例,这就是我想到的:

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();
}

酷!仅供参考,您不需要
$stmt=newpdostatement
因为
prepare()
创建了一个语句。我想我这样做是因为如果不这样做,PHP中会有一个bug。现在可能已经修好了。谢谢你。