Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Levenshtein

jangan lupa ganti delimiter sebelum membuat fungsi.

DELIMITER $$

CREATE FUNCTION LEVENSHTEIN( s1 CHAR(255), s2 CHAR(255)) 
RETURNS int(3) 
DETERMINISTIC
BEGIN
    DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;
    DECLARE s1_char CHAR(255);
    DECLARE cv0, cv1 CHAR(255);

    SET s1_len = LENGTH(s1);
    SET s2_len = LENGTH(s2);
    SET cv1 = 0x00;
    SET j = 1;
    SET i = 1;
    SET c = 0;

    IF s1 = s2 THEN
        RETURN 0;
    ELSE IF s1_len = 0 THEN
        RETURN s2_len;
    ELSE IF s2_len = 0 THEN
        RETURN s1_len;
    ELSE
        WHILE j <= s2_len DO 
          SET c = c + 1; 
          IF s1_char = SUBSTRING(s2, j, 1) THEN  
            SET cost = 0; ELSE SET cost = 1; 
          END IF; 
          SET c_temp = CONV(HEX(SUBSTRING(cv1, j, 1)), 16, 10) + cost; 
                SET c_temp = CONV(HEX(SUBSTRING(cv1, j+1, 1)), 16, 10) + 1;
                IF c > c_temp THEN
                    SET c = c_temp;
                END IF;
                SET cv0 = CONCAT(cv0, UNHEX(HEX(c))), j = j + 1;
            END WHILE;
            SET cv1 = cv0, i = i + 1;
        END WHILE;
    END IF;
    RETURN c;
END$$

DELIMITER ;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hitung kemunculan sub string di kolom MySQL

  2. Mengonversi nomor Epoch ke tanggal yang dapat dibaca manusia di mysql

  3. PDO::PARAM untuk tipe desimal?

  4. Flask-Sqlalchemy BEGIN yang hilang tampaknya menyebabkan sesi tidak sinkron

  5. MySQL Foreign Key Error 1005 errno 150 primary key sebagai kunci asing