2012-05-22 3 views
1

나는 두 개의 mysql 데이터베이스가 있습니다. 첫 번째 데이터베이스의 한 테이블의 열 데이터를 두 번째 데이터베이스의 열 데이터와 비교해야합니다. 두 데이터베이스에서 테이블 이름과 열 이름은 동일합니다. 공통 데이터를 찾아야 해. 열은 varchar 필드입니다. 그러나 문제는 "newyork times"이고 "times newyork"과 "newyork"은 공통적 인 것으로 간주되어야합니다. SQL 쿼리를 생성 할 수 없습니다. 이것은 내가 시도한 절차입니다두 mysql 데이터베이스의 데이터 비교

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 ; 

마찬가지로 비교할 수 있습니까?

+0

"문제는"newyork times "이고"newyork "과"newyork "은 공통으로 간주되어야합니다."단순히 데이터베이스를 비교하는 것보다 훨씬 다른 문제입니다. 어떻게 평등을 정의합니까? – Joe

+0

@Joe 그게 내가 직면 한 문제입니다. 나는 그것을 비교할 수 있는지를 알고 싶다. –

답변

1

MySQL에 그렇게 막연한 비교를하도록 말할 수는 없습니다. 그것은 고려되어야한다 다음 중 어떤 알 수 없다 "동일한"

  • newyork의 시간
  • 뉴욕 타임즈
  • 뉴욕

당신은 제한된 수의 경우 검색에서 정상화 할 수 있습니다.

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

물론 매우은 신속하게 관리 할 수 ​​없게됩니다.

일시적으로 새 열을 추가 할 수 있습니까? 그런 다음 일련의 사전 통과에서 데이터를 정리할 수 있습니다.

+0

나는 실수를 찾으려고하지 않고있다. 두 데이터베이스의 두 열에서 비슷한 이름을 찾으려고합니다. 한 데이터베이스에서 "NewYork times"로 저장되고 다른 데이터베이스에서는 "NewYork times"로 저장됩니다. 둘 다 평등해야합니다. 어쨌든 답장을 보내 주셔서 감사합니다. –

+1

그리고 저는 그것이 불가능하다고 말했습니다. 내가 만들고있는 요점은 데이터를 표준화하고 비교 한 다음에 할 수 있다는 것입니다. 나는 의도적으로 작업 실수를 인용했다. 오류를 의미하지는 않았 음을 나타내며, 동일하게 만들어야하는 것은 필요하다. 당신은 ** 컴퓨터에 "정의되지 않은 방식으로 약간 비슷한"것을 비교하도록 ** 요청할 수 없습니다. 특정 언어 규칙 집합을 갖고 있다면 그렇게 말하고 더 많은 예제를 제공하십시오. (침묵 downvotes btw 주셔서 감사합니다, 이유는 설명하지 않고 떠난 사람) – Cylindric

관련 문제