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 dropdrop 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 /