2010-02-26 4 views
8

쿼리의 한 필드로 반환하려는 사람 주소 목록을 포함하는 MySQL 데이터베이스가 있습니다. 그것은 address1, address2, address3, address4, post_code으로 나뉘어 있고 난MySQL이 필드를 연결하지만 빈 필드를 무시합니다.

SELECT CONCAT(`address1`, ' ', `address2`, ' ', `address3`, ' ', `address4`, ' ', `post_code`) AS `address` FROM `table` 

그래서 내가 잘 작동 address에 자신의 주소의 전체 문자열을하게 될 겁니다하지만 일부 필드는 다음 비어있는 경우 나는거야 다음과 같은 일을 할 결국 많은 양의 공백이 생깁니다. 여분의 공간을 어떻게 제거 할 수 있습니까? 각 필드에서 IF()를 수행하는 것보다 쉬운 방법이 있습니까?

답변

17
SELECT CONCAT_WS(' ', NULLIF(address1, ''), NULLIF(address2, ''), NULLIF(address3, ''), NULLIF(address4, ''), NULLIF(post_code, '')) 
FROM table 

하여 빈 필드가 NULL 사실, 당신은 NULLIF 구조는 생략 할 수있는 경우 대신 IFNULL의

SELECT CONCAT_WS(' ', address1, address2, address3, address4, post_code) 
FROM table 
2

사용 CONCAT_WS 대신 CONCAT

SELECT CONCAT_WS(' ',`address1`, `address2`, `address3`, `address4`, `post_code`) AS `address` 
FROM `table`; 
1

을, 당신은 또한 유착을 사용할 수 있습니다 ,이 작업을 위해 만들어졌습니다.

관련 문제