Mysql
 sql >> база данни >  >> RDS >> Mysql

може ли soundex да се използва за част от колона в mysql?

Ще трябва да разделите всяка дума и да изпълните SOUNDEX сравнение, точно това прави тази функция, за която ще ви разкажа.

Използване на функцията

Примерно използване:SELECT p.name FROM products p WHERE soundex_match('fiftythree', p.name, ' ')

Необходими са 3 аргумента:

  • игла:думата, която търсите
  • чувал за сено:Низът от думи, сред които търсите
  • splitChar:Знакът за интервал, който ще раздели низа на единични думи. Обикновено това е интервал (‘ ‘)

Ако някоя дума в купа сено звучи подобно на игла, функцията ще върне 1 и 0 в противен случай.

Създаване на функцията във вашата база данни

Така че влезте във вашата база данни (phpMyAdmin или командния ред) и изпълнете това, трябва да го направите само веднъж):

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. 10 Въпроса за интервю за база данни на MySQL за начинаещи и средно напреднали

  2. PHP MYSQL - Вмъкване в без използване на имена на колони, но с поле за автоматично нарастване

  3. Множествено автоматично довършване, разделено със запетая, в едно поле

  4. Свързване с mysql в xampp без парола

  5. Класът 'mysqli_connect' не е намерен