MySQL CONCAT에서 NULL 값 처리
CONCAT() 함수를 사용하여 MySQL에서 여러 필드를 연결할 때 결과는 다음과 같을 수 있습니다. 필드에 NULL 값이 포함된 경우 NULL입니다. 이로 인해 데이터 검색 작업에서 예상치 못한 결과가 발생할 수 있습니다.
"devices" 테이블에서 다음 데이터를 고려하십시오.
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)
보시다시피 3행과 4행이 반환됩니다. os_type 또는 os_version에 NULL이 포함되어 있으므로 NULL입니다. 이를 방지하기 위해 COALESCE() 함수를 사용하여 연결 표현식의 각 필드를 래핑할 수 있습니다. COALESCE()는 두 개 이상의 값을 가져와 NULL이 아닌 첫 번째 값을 반환하거나 모든 값이 NULL인 경우 마지막 인수를 반환합니다.
따라서 수정된 쿼리는 다음과 같습니다.
SELECT CONCAT(COALESCE(`affiliate_name`,''),'-',COALESCE(`model`,''),'-',COALESCE(`ip`,''),'-',COALESCE(`os_type`,''),'-',COALESCE(`os_version`,'')) AS device_name FROM devices
이것은 수정된 쿼리는 이제 원하는 결과를 반환합니다.
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-
각 필드를 COALESCE()로 래핑하여 NULL 값이 무시되고 빈 문자열로 대체되어 NULL이 아닌 연결 결과가 발생합니다.
위 내용은 MySQL에서 문자열을 연결할 때 NULL 값을 처리하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!