2014-04-25 2 views
4

기본적으로 조인을 수행하는 동안 테이블 필드를 변환하려고합니다. 필드의 숫자는 0009897896, 000239472938, 00032423 등으로 시작됩니다.MySQL - CONVERT를 기반으로하는 열 기반의 숫자 열

조인 기반 변환을 수행 할 때 열을 쿼리 할 때 앞에 오는 0이없는 숫자가 표시되므로 9897896, 239472938, 32423 등과 같이 표시됩니다.

누군가가 나를 달성하도록 도와 줄 수 있습니까? 나는 여기에 내가 다른 데이터베이스에서 합류 ... 지금까지있어 무엇 잠시 :(

이 문제에 갇혀했습니다.

SELECT l.loannumber AS '1 Loan number', 
     fl.loan_num AS '2 Loan number', 
     CASE 
      WHEN loannumber<>fl.loan_num THEN "YES" 
      ELSE "NO" 
     END AS "issue?" 
FROM loan l 
LEFT JOIN cware_cms.file_lst fl ON (CONVERT(SUBSTRING_INDEX(l.LoanNumber, '-', -1), UNSIGNED INTEGER)) = (CONVERT(SUBSTRING_INDEX(fl.loan_num, '-', -1),UNSIGNED INTEGER)) 
LEFT JOIN cware_cms.case_lst cl ON cl.case_id = 
    (SELECT MAX(cware_cms.file_case.case_id)) 
FROM cware_cms.file_case 
INNER JOIN cware_cms.case_lst ON cware_cms.file_case.case_id = cware_cms.case_lst.case_id 
+2

이 쿼리 가지고있는 문제가 무엇 –

+0

당신은 데이터 증가와 성능 문제를 얻을 수 있습니다 내가 이것을 실행하면 JOIN' 조건 – Uriil

+0

'에 데이터 조작을 사용하지 않는 것이 좋습니다?. 쿼리를 사용하면 l을 사용하여 1 및 2 개의 대출 번호를 반환합니다. 0시 – user3571153

답변

1

난 당신이 선도적 인 0을 다듬을 생각이 트릭을 할 것입니다 :

LEFT JOIN cware_cms.file_lst fl ON TRIM(LEADING '0' FROM l.loannumber) = TRIM(LEADING '0' FROM fl.loan_num) 
+0

쿼리를 실행할 때 여전히 0을 반환합니다. – user3571153

+0

SELECT 절에도 TRIM 함수를 사용하십시오. 트림 선택 (fl.loan_num에서 LEADING '0') ... – MinhD