Mysql Select using Alias
In the where clause, trade the Ic alias with IFNULL(c.new_ic,c.old_ic).

 SELECT
     `c`.`fullname` AS `fullname`,
     IFNULL(`c`.`new_ic`,`c`.`old_ic`) AS `Ic`,
     `bla`.`loan_no` AS `Loan_No`,
     `bla`.`total_loan_amt` AS `Total_Loan_Amt`,
     `bla`.`monthly_installment` AS `Month_Inst_Amt`,
     `bla`.`disb_date` AS `disb_date` FROM (`customers` `c`
 JOIN `basic_loan_application` `bla`
    ON ((`bla`.`customer_uid` = `c`.`customer_uid`))) 
 WHERE IFNULL(`c`.`new_ic`,`c`.`old_ic`) LIKE '%800%' ORDER BY `bla`.`Basic_Loan_Application_Id` DESC LIMIT 0, 1


This happen because the query execution order. In MySQL queries are parsed in this order:

1- FROM clause
2- WHERE clause
3- GROUP BY clause
4- HAVING clause
5- SELECT clause
6- ORDER BY clause 


Which means that queries is not executed the way we write them. So, the Ic alias is not defined in the moment of WHERE clause is executed.