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

dapatkah soundex digunakan pada bagian kolom di mysql?

Anda harus memecah setiap kata dan melakukan SOUNDEX perbandingan, itulah fungsi yang akan saya ceritakan kepada Anda.

Menggunakan fungsi

Contoh penggunaan:SELECT p.name FROM products p WHERE soundex_match('fiftythree', p.name, ' ')

Dibutuhkan 3 argumen:

  • jarum:Kata yang Anda cari
  • haysack:Rangkaian kata yang Anda cari
  • splitChar:Karakter spasi putih yang akan membagi string menjadi satu kata. Umumnya adalah spasi(‘ ‘)

Jika ada kata di tumpukan jerami yang terdengar mirip dengan jarum, fungsi akan mengembalikan 1 dan 0 sebaliknya.

Membuat fungsi di database Anda

Jadi, masuk ke database Anda (phpMyAdmin atau baris perintah) dan jalankan ini, Anda hanya perlu melakukannya sekali ini):

drop function if exists soundex_match;
delimiter $$
create function soundex_match (needle varchar(128), haystack text, splitChar varchar(1)) returns tinyint
  deterministic
  begin
    declare spacePos int;
    declare searchLen int default length(haystack);
    declare curWord varchar(128) default '';
    declare tempStr text default haystack;
    declare tmp text default '';
    declare soundx1 varchar(64) default soundex(needle);
    declare soundx2 varchar(64) default '';

    set spacePos = locate(splitChar, tempStr);

    while searchLen > 0 do
      if spacePos = 0 then
        set tmp = tempStr;
        select soundex(tmp) into soundx2;
        if soundx1 = soundx2 then
          return 1;
        else
          return 0;
        end if;
      end if;

      if spacePos != 0 then
        set tmp = substr(tempStr, 1, spacePos-1);
        set soundx2 = soundex(tmp);
        if soundx1 = soundx2 then
          return 1;
        end if;
        set tempStr = substr(tempStr, spacePos+1);
        set searchLen = length(tempStr);
      end if;

      set spacePos = locate(splitChar, tempStr);

    end while;

    return 0;

  end
$$
delimiter ;

http://www.imranulhoque.com/ mysql/mysql-function-soundex-match-multi-word-string/




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa perbedaan kinerja dalam implementasi divisi relasional MySQL (IN AND alih-alih IN OR)?

  2. MYSQL - Kelompokkan menurut batas

  3. cara menggabungkan tabel dengan hubungan 1 ke banyak menjadi 1 baris record

  4. Pembuatan MySQL ke Excel menggunakan PHP

  5. Mysql pilih * dari tidak mengembalikan semua baris