반응형
잠재적으로 NULL 또는 빈 값이 있는 조건부 CONCAT
아래 코드에서는 주소의 여러 부분을 연결하여 주소 필드를 만들고 있습니다.
하지만, 예를 들면address2
비어있었다, 뒤에.,
주소로 연결됩니다.
즉, 모든 필드가 비어 있으면 결과는 다음과 같습니다.,,,,
.
한다면address1
가"House Number"
그리고 다른 건 다 비어있고 결국엔House Number,,,,
.
CONCAT( COALESCE(address1,'') , ', ' ,
COALESCE(address2,'') , ', ' ,
COALESCE(address3,'') , ', ' ,
COALESCE(city,'') , ', ' ,
COALESCE(zip, '')
) AS Address,
주소 부분의 내용이 비어 있지 않은 경우에만 주소 부분 사이에 쉼표를 조건부로 배치하는 방법이 있습니까?
(사이비 코드)의 선을 따라 있는 것과 같은 것.IF(address1) is NULL use '' ELSE use ','
감사해요.
CONCAT_WS(', ',
IF(LENGTH(`address1`),`address1`,NULL),
IF(LENGTH(`address2`),`address2`,NULL),
IF(LENGTH(`address3`),`address3`,NULL),
IF(LENGTH(`city`),`city`,NULL),
IF(LENGTH(`zip`),`zip`,NULL)
)
사용.CONCAT_WS
매트의 말대로 아주 좋은 생각이지만, 난 다른 방식으로, 지저분하게 말입니다.IF()
문:
CONCAT( COALESCE(address1,''), IF(LENGTH(address1), ', ', ''),
COALESCE(address2,''), IF(LENGTH(address2), ', ', ''),
COALESCE(address3,''), IF(LENGTH(address3), ', ', ''),
COALESCE(city,''), IF(LENGTH(city), ', ', ''),
COALESCE(zip,''), IF(LENGTH(address1), ', ', ''),
) AS Address,
그IF()
s 필드에 길이가 있는지 확인하고, 만약 그렇다면 쉼표를 반환합니다.그렇지 않으면 빈 문자열을 반환합니다.
…과 함께 해 보다
SELECT MAKE_SET(11111,`address1`,`address2`,`address3`,`city`,`zip`) AS Address
모든 NOT NULL 값이 다음으로 구분된 문자열을 반환합니다.,
CONCAT_WS(', ',
NULLIF(`address1`,''),
NULLIF(`address2`,''),
NULLIF(`address3`,''),
NULLIF(`city`,''),
NULLIF(`zip`,'')
)
- CONCAT_WS는 NULL이 아닌 문자열을 결합합니다.
- NULLIF는 왼쪽과 오른쪽이 같으면 NULL을 씁니다.이 경우 값이 빈 따옴표 '와 같으면.
언급URL : https://stackoverflow.com/questions/7751597/conditional-concat-with-potentially-null-or-empty-values
반응형
'programing' 카테고리의 다른 글
UnicodeDecodeError: 'ascii' 코덱이 위치 2에서 바이트 0xd1을 디코딩할 수 없음: 순서가 범위에 없음(128) (0) | 2023.09.24 |
---|---|
DB에 이미지 저장 - 예 또는 아니오? (0) | 2023.09.24 |
작업 표시줄 텍스트 색상 (0) | 2023.09.24 |
jQuery 스크롤을 Div로 (0) | 2023.09.19 |
Gitrepo에서 마스터에 대해 오래된 분기 업데이트 (0) | 2023.09.19 |