1

私は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 の置換プロセスの後に、入力単語を table2 の単語と比較する 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知識はこれを行うには貧弱です。これどうやってするの?

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 に答える