2009-08-22 4 views
2

문자열 (varchar)을 MySQL의 (사용자 지정) 함수에 전달한 다음 알파벳순으로 정렬 된 문자열을 출력 할 수있는 방법이 있는지 궁금합니다. 나는 당신이 실제로 문자열을 재정렬하는 방법을 확신하지 못합니다.문자열을 사전 순으로 정렬하는 MySQL 함수

IN : dbca 
OUT: abcd 

답변

2

아마도이 작업을 수행 할 수있는 저장 함수를 정의 할 수는 있지만 상당히 어색하고 비효율적 일 수 있습니다. 이것은 SQL의 강점을 이용하지 않습니다.

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

그런 기능이 있다면 놀랄 것입니다. 신경 쓰지 마세요. own functions을 구현할 수 있습니다.

2

SQL을 통해 직접 수행 할 수 없습니다. 프로그래밍 언어에서 SELECTUPDATE을 수행해야합니다.

0

내가 빌의 예를하기로 결정이 내가 생각 해낸 것입니다 :

그러나, 많은 동적 프로그래밍 언어로 간단한 것

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

쿨! 참고로'prepare()'가 문장을 생성하기 때문에'$ stmt = new PDOStatement;는 필요 없다. –

+0

당신이 그렇게하지 않으면 PHP에서 버그가 있었기 때문에 나는 그렇게했다고 생각합니다. 아마 지금까지 고쳐 졌을 것입니다. 그래도 고마워. –

관련 문제