[SQL] 모든 필드는 NULL이 포함 된 경우 MySQL의 CONCAT는 NULL을 반환
SQL모든 필드는 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-
해결법
-
==============================
1.COALESCE에 싸서 빈 문자열과 NULL 값을 변환
COALESCE에 싸서 빈 문자열과 NULL 값을 변환
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices
-
==============================
2.사용 CONCAT_WS 대신 :
사용 CONCAT_WS 대신 :
SELECT CONCAT_WS('-',`affiliate_name`,`model`,`ip`,`os_type`,`os_version`) AS device_name FROM devices
-
==============================
3.(당신은 예를 들어 모든 구성원 사이의 같은 구분을하지 않으려면) 다음을 사용 CONCAT 같이 CONCAT_WS에서 같은 유연성을하려면 :
(당신은 예를 들어 모든 구성원 사이의 같은 구분을하지 않으려면) 다음을 사용 CONCAT 같이 CONCAT_WS에서 같은 유연성을하려면 :
SELECT CONCAT_WS("",affiliate_name,':',model,'-',ip,... etc)
-
==============================
4.
SELECT CONCAT(isnull(`affiliate_name`,''),'-',isnull(`model`,''),'-',isnull(`ip`,''),'-',isnull(`os_type`,''),'-',isnull(`os_version`,'')) AS device_name FROM devices
-
==============================
5.첫 번째 필드가 NULL의 경우 CONCAT_WS은 여전히 나를 위해 널 (null)을 생산하고 있습니다. 나는 같이 시작 부분에 제로 길이 문자열을 추가하여 해결
첫 번째 필드가 NULL의 경우 CONCAT_WS은 여전히 나를 위해 널 (null)을 생산하고 있습니다. 나는 같이 시작 부분에 제로 길이 문자열을 추가하여 해결
CONCAT_WS("",`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`)
하나
CONCAT("",`affiliate_name`,'-',`model`,'-',`ip`,'-',`os_type`,'-',`os_version`)
첫번째 필드는 NULL 인 경우 Null을 생성한다.
-
==============================
6.아래 같은 경우 문을 사용할 수 있습니다
아래 같은 경우 문을 사용할 수 있습니다
select CONCAT(if(affiliate_name is null ,'',affiliate_name),'- ',if(model is null ,'',affiliate_name)) as model from devices
from https://stackoverflow.com/questions/15741314/mysql-concat-returns-null-if-any-field-contain-null by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 방법은 하나 개 이상의 결과 하위 쿼리를 사용하여 테이블에 값을 삽입 할 수 있습니까? (0) | 2020.04.24 |
---|---|
[SQL] 왜 LIKE 필터에 밑줄 문자를 사용하여 저 모두에게 결과를 제공합니까? (0) | 2020.04.24 |
[SQL] 하나 개의 값에 대해 여러 열을 확인 (0) | 2020.04.24 |
[SQL] 어떻게 SQL Server Management Studio를 가진 복합 키를해야합니까? (0) | 2020.04.24 |
[SQL] CREATE TABLE IF NOT은 SQL 서버에서 해당 EXISTS [중복] (0) | 2020.04.24 |