Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bandingkan perbedaan teks antara dua baris / tabel yang hampir identik di MySql

Meskipun akan lebih mudah untuk melakukannya dalam kode aplikasi Anda, ini dimungkinkan melalui beberapa fungsi 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 ;

Fungsi pertama digunakan di fungsi kedua, yang merupakan fungsi yang ingin Anda panggil dalam kode Anda, seperti:

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. Apakah ada cara untuk mencocokkan IP dengan IP+CIDR ​​langsung dari kueri SELECT?

  2. Bagaimana cara mengelompokkan berdasarkan bulan dan mengembalikan nol jika tidak ada nilai untuk bulan tertentu?

  3. MySql:MyISAM vs. Inno DB!

  4. MySQLdb - Periksa apakah ada baris Python

  5. Bug tipe data integer Mysql Workbench (perubahan INT> (11))