문자열 (varchar)을 MySQL의 (사용자 지정) 함수에 전달한 다음 알파벳순으로 정렬 된 문자열을 출력 할 수있는 방법이 있는지 궁금합니다. 나는 당신이 실제로 문자열을 재정렬하는 방법을 확신하지 못합니다.문자열을 사전 순으로 정렬하는 MySQL 함수
IN : dbca
OUT: abcd
문자열 (varchar)을 MySQL의 (사용자 지정) 함수에 전달한 다음 알파벳순으로 정렬 된 문자열을 출력 할 수있는 방법이 있는지 궁금합니다. 나는 당신이 실제로 문자열을 재정렬하는 방법을 확신하지 못합니다.문자열을 사전 순으로 정렬하는 MySQL 함수
IN : dbca
OUT: abcd
아마도이 작업을 수행 할 수있는 저장 함수를 정의 할 수는 있지만 상당히 어색하고 비효율적 일 수 있습니다. 이것은 SQL의 강점을 이용하지 않습니다.
<?php
$in = "dbca";
$out = str_split($in);
sort($out);
print_r($out);
그런 기능이 있다면 놀랄 것입니다. 신경 쓰지 마세요. own functions을 구현할 수 있습니다.
SQL을 통해 직접 수행 할 수 없습니다. 프로그래밍 언어에서 SELECT
및 UPDATE
을 수행해야합니다.
내가 빌의 예를하기로 결정이 내가 생각 해낸 것입니다 :
그러나, 많은 동적 프로그래밍 언어로 간단한 것
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();
}
쿨! 참고로'prepare()'가 문장을 생성하기 때문에'$ stmt = new PDOStatement;는 필요 없다. –
당신이 그렇게하지 않으면 PHP에서 버그가 있었기 때문에 나는 그렇게했다고 생각합니다. 아마 지금까지 고쳐 졌을 것입니다. 그래도 고마워. –