1

我有两个mysql数据库。我必须将第一个数据库中一个表的列数据与第二个数据库的列数据进行比较。在这两个数据库中,表名和列名是相同的。我必须找到共同的数据。该列是一个 varchar 字段。但问题是“newyork times”和“times newyork”和“newyork”应该被认为是共同的。我无法生成 sql 查询。这是我尝试过的程序

drop procedure if exists test;
delimiter #
create procedure test()
begin

declare v_max int unsigned default 243;
declare v_counter int unsigned default 1;
declare pName varchar(255);

start transaction;
while v_counter < v_max do
select t.property_name from t.property where t.property_id=v_counter into pName;
SELECT distinct b.property.property_name,b.property.property_id from b.property where    b.property.property_name like '%'+pName+'%'
set v_counter=v_counter+1;
end while;
commit;
end #

delimiter ; 

是否可以同样进行比较?

4

1 回答 1

1

不可能告诉 MySQL 进行如此模糊的比较。它不知道以下哪一项应该被认为是“相同的”

  • 纽约时报
  • 纽约时报
  • 约克

如果您的“错误”数量有限,则可以在查找中对其进行规范化

WHERE t.property_name = REPLACE(v.property_name, 'new york times', 'new york')

但当然,这很快就会变得难以管理。

您可以添加一个新列,即使是暂时的?然后,您可以在一组预通行证中对数据进行某种清理。

UPDATE t
SET cleanpropertyname = 'new york times' 
WHERE property_name IN ('new york times', 'new york', 'nyt')
于 2012-05-22T11:58:56.827 回答