Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

soundex có thể được sử dụng trên một phần của cột trong mysql không?

Bạn sẽ cần phải chia nhỏ từng từ và thực hiện SOUNDEX so sánh, đó chính xác là chức năng mà tôi sẽ nói với bạn về chức năng này.

Sử dụng hàm

Cách sử dụng ví dụ:SELECT p.name FROM products p WHERE soundex_match('fiftythree', p.name, ' ')

Nó có 3 đối số:

  • kim:Từ bạn đang tìm kiếm
  • haysack:Chuỗi từ mà bạn đang tìm kiếm
  • splitChar:Dấu cách khoảng trắng sẽ chia chuỗi thành các từ. Nói chung đó là khoảng trắng (‘‘)

Nếu bất kỳ từ nào trong đống cỏ khô phát âm giống với kim, hàm sẽ trả về 1 và 0 nếu không.

Tạo hàm trong cơ sở dữ liệu của bạn

Vì vậy, hãy vào cơ sở dữ liệu của bạn (phpMyAdmin hoặc dòng lệnh) và thực hiện điều này, bạn chỉ cần thực hiện điều này một lần):

Hàm drop
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. Bản sao lưu quản trị viên MySQL:Chế độ tương thích, Điều này chính xác đang làm gì?

  2. .NET CORE MySql MaxPoolSize không được áp dụng trong

  3. Làm cách nào tôi có thể viết di chuyển để chèn bản ghi bằng phinx?

  4. Truyền FieldName dưới dạng Tham số trong Thủ tục Lưu trữ MySQL

  5. xóa tất cả khỏi bảng