2011-10-14 5 views
1

내가 가진 한 표MySQL의 저장 기능

tid letter1 letter2 
1 a  e 
2 p  b 
3 c  k 
4 pp  bb 
5 rr  ll 

다른 표 2는

t2id word 
1 banana 
2 strawberry 
3 apple 
4 grape 

는 전 치환 후 표 2에서 단어 입력 단어를 비교 MySQL의 기능을 필요 같은 표에 공정 :

SELECT CHAR_LENGTH(word) AS charl FROM table2; 

DECLARE i INT DEFAULT 0; 

SET query = CONCAT(
    ' SELECT word FROM table2 WHERE (', 
    WHILE i < charl DO 
     //if word's i'nth letter found in the table1 
     IF (SELECT letter2 FROM table1 WHERE word{i} = letter1) 
     //replace letter1 with letter2 on this row 
     'REPLACE(word,letter1,letter2) AND ', 
    END; 
    ') = 'inputword' '; 

내 MySQL은이 작업을 수행하는 가난 knowledgeis. 내가 어떻게 할 수 있니?

답변

0

추측했듯이 저장 프로 시저에서이 작업을 수행해야합니다. 실제로

저장 기능 :

DELIMITER $$ 

CREATE FUNCTION ReplaceChars(Fullword VARCHAR(255) 
          , ReplaceThis VARCHAR(255) 
          , WithThis VARCHAR(255)) RETURNS VARCHAR(255) 
BEGIN 
    DECLARE Result VARCHAR(255); 
    DECLARE i INTEGER;  

    SET Result = Fullword; 
    IF LENGTH(ReplaceThis) = LENGTH(WithThis) THEN 
    SET i = LENGTH(ReplaceThis); 
    WHILE i > 0 DO 
     SET Result = REPLACE(Result, MID(ReplaceThis,i,1),MID(WithThis,i,1)); 
     SET i = i - 1; 
    END WHILE; 
    END IF; 
    RETURN Result; 
END $$