1

我有一张桌子1

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

在 table1 上的替换过程之后,我需要一个 mysql 函数来将输入单词与 table2 中的单词进行比较,例如:

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知识太差了。我怎样才能做到这一点?

4

1 回答 1

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 $$
于 2011-10-21T18:33:58.023 回答