2012-11-05 2 views
17

두 필드가 MySQL의 함수 COALESCE()과 비교됩니다. 예 : COALESCE(Field1, Field2). 문제는 Field1이 때때로 비어 있지만 null이 아니라는 것입니다. NULL이 아니기 때문에 COALESCE()은 비어 있더라도 Field1을 선택합니다. 이 경우 Field2를 선택해야합니다.공백 (null이 아님) 필드에 대한 COALESCE()

나는 이것을 확인하기 위해 if-then-else (CASE) 문을 쿼리에 작성할 수 있지만 빈칸 필드에 대해 COALESCE()과 같은 멋진 간단한 함수가 있습니까? 그것은 그렇지 않으면 공백 또는 널 (null) 및 필드 2 아니라면 IFNULL이 필드 1을 반환하면서 필드 1이 비어있는 경우

답변

25
SELECT IFNULL(NULLIF(Field1,''),Field2) 

NULLIF는 NULL을 반환합니다.

+4

나는 같은 것을 할 수 있지만 COALESCE는 맞습니까? 'COALESCE (NULLIF (Field1, ''), Field2)'- 속도/처리로드 차이가 있습니까? –

+0

'COALESCE' 대'IFNULL '에 대한 흥미로운 답변 : http://stackoverflow.com/questions/4747877/mysql-ifnull-vs-coalesce-which-is-faster –

+0

@John correct http://stackoverflow.com/ a/27485689/1654265 –

6

당신은 CASE 표현 사용할 수 있습니다

CASE WHEN Field1 <> '' THEN Field1 ELSE Field2 END 
+0

이것이 if-then-else의 의미입니다. 내가 청소기 한 줄 솔루션을 찾고 있었어요 –

+3

이제 한 줄 :) –

6

내가 여기에 파티에 늦었을 알고,하지만 여전히() COALESCE를 사용하여이 동안 할 수있는 방법이있다. 값이 NULL 또는 ''이면이 작업이 작동합니다.

Select COALESCE(NULLIF(Field1,''), Field2) 
+1

선택한 답변에 대한 코멘트보기 :) –

+0

글쎄, 거기에 간다! 못 봤어. – Beachhouse

관련 문제