sql >> Databáze >  >> RDS >> Mysql

lze soundex použít na část sloupce v mysql?

Budete muset rozdělit každé slovo a provést SOUNDEX srovnání, což je přesně to, co tato funkce, o které vám povím, dělá.

Použití funkce

Příklad použití:SELECT p.name FROM products p WHERE soundex_match('fiftythree', p.name, ' ')

Vyžaduje 3 argumenty:

  • needle:Slovo, které hledáte
  • haysack:Řetězec slov, mezi kterými vyhledáváte
  • splitChar:Znak mezery, který rozdělí řetězec na jednotlivá slova. Obecně je to mezera(‘ ‘)

Pokud nějaké slovo v kupce sena zní podobně jako jehla, funkce vrátí 1 a v opačném případě 0.

Vytvoření funkce v databázi

Přejděte tedy do své databáze (phpMyAdmin nebo příkazový řádek) a spusťte toto, stačí to udělat pouze jednou):

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. Ladění výkonu kolenem:Nesprávné použití dočasných tabulek

  2. Aktualizace tabulky MySQL na základě jiné hodnoty tabulky

  3. Optimální způsob uložení/načtení pole v tabulce

  4. JavaScript Před smazáním potvrďte pomocí PHP/MYSQL