Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySql में दो लगभग समान पंक्तियों/तालिकाओं के बीच पाठ अंतर की तुलना करें

यद्यपि आपके एप्लिकेशन कोड में इसे पूरा करना आसान होगा, यह कुछ 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 ;

पहले फ़ंक्शन का उपयोग दूसरे में किया जाता है, जिसे आप अपने कोड में कॉल करना चाहते हैं, जैसे:

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. SysBench का उपयोग करके MySQL के प्रदर्शन को बेंचमार्क कैसे करें

  2. MySQL - इकाई:तालिका 'TableDetails' में कॉलम 'IsPrimaryKey' के लिए मान DBNull है

  3. क्या MySQL इन्सर्ट के लिए नामित PDO params को बाइंड करने का कोई शॉर्टकट है?

  4. एसक्यूएल एक स्ट्रिंग का हिस्सा ढूंढें और बदलें

  5. php xampp के साथ एक्सेस अस्वीकृत त्रुटि