我使用这个SELECT查询:
SELECT sequence, company,
    CONCAT(address1, '\r', address2, '\r', address3, '\r', town, '\r', county, '\r', postcode) AS address
FROM customer
WHERE company_status = 'Customer'
ORDER BY company ASC但有时,某些地址列可能为null/空白,因此我不想包括它们
我在PHP中使用这个查询,所以我尝试过:
str_replace(array("\r","\n"), '', $result["address"])但这只是删除地址之间的所有换行符,如何才能只删除空行?
发布于 2015-08-05 16:01:50
只需添加条件-
CONCAT(IF(address1 IS NOT NULL, CONCAT(address1, '\r'), ''), IF(address2 IS NOT NULL, CONCAT(address2, '\r'), ''), .... 发布于 2015-08-05 16:04:05
像这样的东西?
$addressArr = array();
if (isset($result["address"])){
foreach ($result["address"] as $address) {
     if ($address) {
     $addressArr = $address;
     }
}
}
var_dump($addressArr);发布于 2015-08-05 16:07:57
如果修改select状态并使用控制流函数IFNULL,则可以测试该列是否为null,如果是,则使用'‘作为返回值。此外,您需要在IFNULL语句的第一个参数中再次连接,以便仅当address1不为null时才显示\r。
SELECT sequence, 
       company, 
       CONCAT(IFNULL(CONCAT(address1, '\r'),''), IFNULL(CONCAT(address2, '\r'),''), IFNULL(CONCAT(address3, '\r'),''), town, '\r', county, '\r', postcode) as address 
   FROM customer 
   WHERE company_status = 'Customer' 
   ORDER BY company A最后,您会注意到数据库中不支持empty文本。这是因为同时拥有空字段和空字段被认为是一个糟糕的设计。让我们来解决这个问题。
UPDATE customer SET address1=NULL WHERE MyColumn='';只需对地址列运行此命令。然后将列上的默认值设置为null。
https://stackoverflow.com/questions/31826640
复制相似问题