Mysql
 sql >> Baza danych >  >> RDS >> Mysql

czy soundex może być użyty na części kolumny w mysql?

Musisz rozbić każde słowo i wykonać SOUNDEX porównanie, czyli dokładnie to, o czym mówi ta funkcja, o której wam opowiem.

Korzystanie z funkcji

Przykładowe użycie:SELECT p.name FROM products p WHERE soundex_match('fiftythree', p.name, ' ')

Wymaga 3 argumentów:

  • igła:słowo, którego szukasz
  • siano:ciąg słów, wśród których szukasz
  • splitChar:znak odstępu, który dzieli ciąg na pojedyncze słowa. Generalnie jest to spacja(‘’)

Jeśli jakiekolwiek słowo w stogu siana brzmi podobnie do igły, funkcja zwróci 1 i 0 w przeciwnym razie.

Tworzenie funkcji w Twojej bazie danych

Wejdź więc do swojej bazy danych (phpMyAdmin lub wiersz poleceń) i wykonaj to, musisz to zrobić tylko ten jeden raz):

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. Laravel Od surowego DB do elokwentnego

  2. Dlaczego wstawianie MySQL InnoDB jest tak wolne?

  3. filtr sql/mysql zawierający tylko maksymalną wartość

  4. Jak dostosować kopie zapasowe MySQL i MariaDB za pomocą ClusterControl

  5. Błąd MySQL 2006:serwer mysql zniknął