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

So sánh sự khác biệt văn bản giữa hai hàng / bảng gần như giống hệt nhau trong MySql

Mặc dù sẽ dễ dàng hơn để thực hiện điều này trong mã ứng dụng của bạn, nhưng có thể thực hiện được thông qua một vài hàm MySQL:

delimiter //

drop function if exists string_splitter //
create function string_splitter(
  str text,
  delim varchar(25),
  pos tinyint) returns text
begin
return replace(substring_index(str, delim, pos), concat(substring_index(str, delim, pos - 1), delim), '');
end //

drop function if exists percentage_of_matches //

create function percentage_of_matches(
  str1 text,
  str2 text)returns double
begin
set str1 = trim(str1);
set str2 = trim(str2);
while instr(str1, '  ') do
  set str1 = replace(str1, '  ', ' ');
end while;
while instr(str2, '  ') do
  set str2 = replace(str2, '  ', ' ');
end while;
set @i = 1;
set @numWords = 1 + length(str1) - length(replace(str1, ' ', ''));
set @numMatches = 0;
while @i <= @numWords do
  set @word = string_splitter(str1, ' ', @i);
  if str2 = @word or str2 like concat(@word, ' %') or str2 like concat('% ', @word) or str2 like concat('% ', @word, ' %') then
    set @numMatches = @numMatches + 1;
  end if;
  set @i = @i + 1;
end while;
return (@numMatches / @numWords) * 100;
end //

delimiter ;

Hàm đầu tiên được sử dụng trong hàm thứ hai, là hàm bạn muốn gọi trong mã của mình, như sau:

select percentage_of_matches('salt water masala', 'salt masala water');
select percentage_of_matches('water onion maggi milk', 'water onion maggi');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. mysql_query () mong đợi tham số 2 là tài nguyên, chuỗi được cung cấp trong

  2. Truy vấn để tham gia hai bảng

  3. Tính toán tổng số đang chạy trên các hàng và nhóm theo ID

  4. Máy chủ MySQL trên MAMP-Windows sẽ không khởi động

  5. Làm cách nào để chèn bản ghi bằng hàm MySQL NOW () trong MySQLi với bind_param?