2009-07-07 6 views
4

주소 라벨이 붙은 셀에 많은 수의 주소를 보유한 테이블이 있습니다. 시티. 전체 주소를 일반적인 '주소, 도시'형식으로 병합하려고합니다.트림이있는 mysql concat

가끔 데이터베이스에 위치 셀 중 하나가 비어 있습니다. 따라서, 나는 회선에서 IFNULL을 수행하지만, 끝나거나 뒤 따르는 ','로 끝납니다. 나는 'concat'과 함께 'trim'함수를 시도했지만, 경우에 따라 ','후행을 얻는다.

이것은 내 쿼리

 
SELECT TRIM(BOTH ',' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals 

나는이 문제를 가지고 왜 어떤 생각이 작성한 어떻게? 내 연재 성명서를 작성하는 더 좋은 방법이 있습니까?

답변

6

나는 쿼리 그냥 둘 문에서 쉼표 뒤에 공백이 없습니다 생각합니다. 그 날

SELECT TRIM(BOTH ', ' FROM CONCAT(IFNULL(address,''), ', ', IFNULL(city,''))) FROM locals; 
+0

감사합니다. 쉼표 뒤에있는 공백은 쉼표를 제거하지 않을 것이라는 점을 mysql에 알리는 것이 놀랍지 만, 결국에는 내 줄에 여분의 공간이 필요하지 않습니다. 건배 – pedalpete

1

이것은 꽤 길지만 작동하는 것 같습니다. 따라서이 데이터

SELECT TRIM(CONCAT(IFNULL(address,''), IF(address IS NOT NULL AND city IS NOT NULL, ', ',''), IFNULL(city,''))) FROM locals 

:

address   city 
---------------------------- 
High Street Southampton 
NULL   London 
Station Road NULL 
London Road Brighton 

당신이 얻을이 :

High Street, Southampton 
London 
Station Road 
London Road, Brighton 
-1

"은가먼트가 ,,,, C가 D는, E는 ,,,,, EED, sffre는"GROUP_CONCAT

대한 우아한 용액 어려운 것으로 보인다 같은 연속 세퍼레이터를 박리 작동 보인다

연속 된 분리 기호를 피하고 각보기의 결합 또는 결합을 피하는 각 조건에 대한보기를 만드는 방법이 사용됩니다.