MySQL функция для сортировки строки в алфавитном порядке - PullRequest
2 голосов
/ 23 августа 2009

Мне интересно, есть ли способ, которым я могу передать строку (varchar) (пользовательской) функции в MySQL и затем вывести строку в алфавитном порядке. Я не уверен, как бы вы на самом деле изменили порядок строки.

IN : dbca
OUT: abcd

Ответы [ 4 ]

2 голосов
/ 23 августа 2009

Вы не сможете сделать это напрямую через SQL; вам придется делать SELECT и UPDATE из языка программирования.

2 голосов
/ 23 августа 2009

Можно было бы определить хранимую функцию, которая могла бы сделать это, но это было бы довольно неловко и неэффективно. Это не использует преимущества SQL.

Однако во многих динамических языках программирования это было бы просто:

<?php
$in = "dbca";
$out = str_split($in);
sort($out);
print_r($out);
2 голосов
/ 23 августа 2009

Я был бы удивлен, если бы была такая функция. Неважно, вы можете реализовать свои собственные функции .

0 голосов
/ 23 августа 2009

Я решил взять пример Билла, и вот что я придумал:

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();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...