Merhaba , mysql de bir fonksiyon tanımlayarak onu sonradan kullanmaya çalıştığımda aşağıdaki hatayı alıyorum lütfen yardımcı olun.

CREATE FUNCTION levenshtein( s1 VARCHAR(255), s2 VARCHAR(255) )
  RETURNS INT
  DETERMINISTIC
  BEGIN
    DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;
    DECLARE s1_char CHAR;
    -- max strlen=255
    DECLARE cv0, cv1 VARBINARY(256);
    SET s1_len = CHAR_LENGTH(s1), s2_len = CHAR_LENGTH(s2), cv1 = 0x00, j = 1, i = 1, c = 0;
    IF s1 = s2 THEN
      RETURN 0;
    ELSEIF s1_len = 0 THEN
      RETURN s2_len;
    ELSEIF s2_len = 0 THEN
      RETURN s1_len;
    ELSE
      WHILE j <= s2_len DO
        SET cv1 = CONCAT(cv1, UNHEX(HEX(j))), j = j + 1;
      END WHILE;
      WHILE i <= s1_len DO
        SET s1_char = SUBSTRING(s1, i, 1), c = i, cv0 = UNHEX(HEX(i)), j = 1;
        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;
          IF c > c_temp THEN SET c = c_temp; END IF;
            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;

and helper function

CREATE FUNCTION levenshtein_ratio( s1 VARCHAR(255), s2 VARCHAR(255) )
  RETURNS INT
  DETERMINISTIC
  BEGIN
    DECLARE s1_len, s2_len, max_len INT;
    SET s1_len = LENGTH(s1), s2_len = LENGTH(s2);
    IF s1_len > s2_len THEN 
      SET max_len = s1_len; 
    ELSE 
      SET max_len = s2_len; 
    END IF;
    RETURN ROUND((1 - LEVENSHTEIN(s1, s2) / max_len) * 100);
  END;

Yazmaya çalıştığım query:

SELECT cevap
FROM `chat`
WHERE levenshtein_ratio( soru,"Hello" ) >80
LIMIT 1 ;

Chat isimli tabloda varchar(250) türünde soru ve cevap isimli sütunlar bulunuyor sadece

Aşağıdaki hatayı alıyorum:

enter image description here

Tablo Yapısı: alt text

soruldu: 22 Haz '12, 07:16

faridmovsumov's gravatar image

faridmovsumov
1.1k193738
cevap kabul oranı: 16%

değiştirildi: 22 Haz '12, 08:15

%C3%B6zcanacar's gravatar image

özcanacar ♦♦
17.2k59183183


Ben sizin tanimladiginiz bu funktionlarin aynisini tanimladim. Yaptiginiz cagrinin da aynisini kullandim. Assagidaki gibi bir "Chat" tablosu olusturup deneme yaptigimda, ben hic bir hata almiyorum. Tablonuzda soru diye bir alan var mi? yada "chat" tablosunun yapisini gönderebilirmisiniz.

Benim kullandigim Tablo ;

delimiter $$

CREATE TABLE `chat` (
  `chat_id` bigint(20) NOT NULL AUTO_INCREMENT,
   `soru` varchar(50) DEFAULT NULL,
   `cevap` varchar(50) DEFAULT NULL,
   PRIMARY KEY (`chat_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1$$
permanent link

cevaplandı: 22 Haz '12, 07:57

mceliksoy's gravatar image

mceliksoy ♦
6.5k84988
cevap kabul oranı: 25%

Tablo yapısının resmini ekledim soruya bir göz atar mısınız tekrar?

(22 Haz '12, 08:02) faridmovsumov faridmovsumov's gravatar image

Fonksiyonları sql sorgusu olarak çalıştırdım sadece ayrıca bir şey yapmama gerek var mıydı? Siz nasıl tanımladınız?

(22 Haz '12, 08:03) faridmovsumov faridmovsumov's gravatar image

Ben su anda mysql 5.1.40 - community kullaniyorum. Senin soruya yazdigin funktionlari kopyaladim ve MySQl Workbench de olusturdum. Olusturmadan önce basina DELIMITER $$ yazmak ve en son da bulunan END den sonrada $$ yazmak gerekti. Bunun disinda sorun olmadan funktionlar olustu. sonrada senin sorunda yazdigin sorguyu yine Workbench le calistirdim ve hic hata almadim.

(22 Haz '12, 08:07) mceliksoy ♦ mceliksoy's gravatar image

Bende sizin fonksiyonların aynısını tanımladım ve bende de sorunsuz çalıştı.

Acaba sizin tablolarda tablolarda mı sorun var? CHECK TABLE chat komutu ile kontrol ettirirmisinin.

http://www.laurencegellert.com/2011/07/mysql-maintenance-tasks-for-innodb-with-mysql-5-1/

(28 Haz '12, 07:14) SaRPaRDa SaRPaRDa's gravatar image
Cevabınız
toggle preview

Bu soruyu takip et

E-Posta üzerinden:

Üyelik girişi yaptıktan sonra abonelik işlemlerini yapabilirsiniz

RSS üzerinden:

Cevaplar

Cevaplar ve Yorumlar

Yazı Formatlama

  • *italic* ya da _italic_
  • **bold** ya da __bold__
  • link:[text](http://url.com/ "başlık")
  • resim?![alt text](/path/img.jpg "başlık")
  • liste: 1. Foo 2. Bar
  • temel HTML etiketleri de kullanılabilir

Bu sorunun etiketleri:

×144
×77

Soruldu: 22 Haz '12, 07:16

Görüntüleme: 926 kez

Son güncelleme: 28 Haz '12, 07:14

powered by BitNami OSQA