2012-04-11 83 views
1

當我在mysql中運行聯合查詢時,有些值返回爲BLOB,有沒有辦法解決這個問題? 我工會查詢,因爲我想具體列的和是在底部Mysql查詢返回帶聯盟加入的BLOB

select a.app_file_id,a.app_trn,a.app_fname,a.app_lname,l.computer_interest,l.loan_life,l.app_ln_amnt, l.commit_date,l.app_amnt_owed,r.amount_paid 
from applicant a 
left join loan l on l.l_app_file_id=a.app_file_id 
left join receipt r on r.r_app_file_id=l.l_app_file_id 
WHERE l.app_loan_type=r.receipt_loan_type 
AND l.app_loan_type='Computer Loan' 
AND MONTHNAME(commit_date) = 'April' 
and YEAR(commit_date)=2012 

Union 
Select '', '','','','','',SUM(l.app_ln_amnt),'',SUM(l.app_amnt_owed),SUM(r.amount_paid) 
from applicant a 
left join loan l on l.l_app_file_id=a.app_file_id 
left join receipt r on r.r_app_file_id=l.l_app_file_id 
WHERE l.app_loan_type=r.receipt_loan_type 
AND l.app_loan_type='Computer Loan' 
AND MONTHNAME(commit_date) = 'April' 
and YEAR(commit_date)=2012 
+0

什麼是回來作爲BLOB?什麼是模式? – 2012-04-11 15:35:56

+0

返回blob的colums是; s_app_trn是INT(9),computer_interest是雙精度,loan_life是int(11)和commit_date是DATE – dames 2012-04-11 15:40:42

回答

2

在UNION的第一個查詢,第二列是一個INT,而在第二個查詢,它是一個空字符串,這不是有效的INT。第5,第6和第8列也是如此。

+0

所以你R說我應該把它放在一個INT?以及日期列怎麼樣 – dames 2012-04-11 17:32:49

+0

爲了避免BLOB,列中值的類型需要匹配。日期可以指定爲字符串,但必須採用年月日格式。 – 2012-04-11 19:06:41

+0

@ScottHunter感謝您的解釋,根據您的解釋我已經提供了一個例子,如果有一些可以即興創作的請做。 – Mateen 2015-04-10 11:55:13

0

一個簡單的方法來避免在聯合blob是通過使用格式。考慮下面的例子

EG:

select "string 1","string 2","string 3" from dual 
union 
select "string 1",format(sum(1+2),0),"string 3" from dual 

,但我不建議這樣。使結果列類型在所有聯合中完全相同,並避免使用格式以避免結果中出現「BLOB」

select "string 1",0 "string 2","string 3" from dual 
union 
select "string 1",sum(1+2),"string 3" from dual