반응형
필드에 NULL이 포함 된 경우 MySQL CONCAT는 NULL을 반환합니다.
내 테이블 "장치"에 다음 데이터가 있습니다.
affiliate_name affiliate_location model ip os_type os_version
cs1 inter Dell 10.125.103.25 Linux Fedora
cs2 inter Dell 10.125.103.26 Linux Fedora
cs3 inter Dell 10.125.103.27 NULL NULL
cs4 inter Dell 10.125.103.28 NULL NULL
아래 쿼리를 실행했습니다.
SELECT CONCAT(`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`) AS device_name
FROM devices
아래 주어진 결과를 반환합니다
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
(NULL)
(NULL)
NULL을 무시하고 결과는 다음과 같아야합니다.
cs1-Dell-10.125.103.25-Linux-Fedora
cs2-Dell-10.125.103.26-Linux-Fedora
cs3-Dell-10.125.103.27-
cs4-Dell-10.125.103.28-
NULL빈 문자열로 값을 감싸서 변환하십시오 .COALESCE
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name
FROM devices
대신 CONCAT_WS 를 사용하십시오 .
CONCAT_WS ()는 빈 문자열을 건너 뛰지 않습니다. 그러나 separator 인수 뒤의 NULL 값은 건너 뜁니다.
SELECT CONCAT_WS('-',`affiliate_name`,`model`,`ip`,`os_type`,`os_version`) AS device_name FROM devices
CONCAT에서와 같이 CONCAT_WS에서 동일한 유연성을 가지려면 (예를 들어 모든 멤버간에 동일한 구분 기호를 원하지 않는 경우) 다음을 사용하십시오.
SELECT CONCAT_WS("",affiliate_name,':',model,'-',ip,... etc)
SELECT CONCAT(isnull(`affiliate_name`,''),'-',isnull(`model`,''),'-',isnull(`ip`,''),'-',isnull(`os_type`,''),'-',isnull(`os_version`,'')) AS device_name
FROM devices
CONCAT_WS첫 번째 필드가 Null이면 여전히 null을 생성합니다. 처음과 같이 길이가 0 인 문자열을 추가 하여이 문제를 해결했습니다.
CONCAT_WS("",`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`)
하나
CONCAT("",`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`)
첫 번째 필드가 Null 인 경우 Null을 생성합니다.
아래처럼 if 문을 사용할 수 있습니다
select CONCAT(if(affiliate_name is null ,'',affiliate_name),'- ',if(model is null ,'',affiliate_name)) as model from devices
참고 URL : https://stackoverflow.com/questions/15741314/mysql-concat-returns-null-if-any-field-contain-null
반응형
'IT' 카테고리의 다른 글
| JavaScript를 사용하여 Twitter Bootstrap 3의 반응 형 중단 점을 감지하는 방법은 무엇입니까? (0) | 2020.06.24 |
|---|---|
| C # 널 입력 가능 문자열 오류 (0) | 2020.06.24 |
| Xcode 6 iPhone 시뮬레이터 응용 프로그램 지원 위치 (0) | 2020.06.24 |
| 프레임 워크 대 라이브러리 대 IDE 대 API 대 SDK 대 툴킷의 차이점은 무엇입니까? (0) | 2020.06.24 |
| 스위프트의 dealloc (0) | 2020.06.24 |