문제

ContactDate, SortName, City, ContactType 및 아래 표에서 요약을 반환하는 SQL 쿼리가 필요합니다. 값이 NULL이면 "항목 없음"텍스트를 반환해야합니다.

contacttable

  • ContactID
  • 연락처
  • userID
  • 요약
  • ContactType
  • 정렬 이름

useTable

  • userID
  • 이름
  • 주소

주소 테이블

  • 주소
  • 도시
  • 거리
  • 상태
  • 지퍼
도움이 되었습니까?

해결책

SELECT COALESCE(CAST(CONVERT(VARCHAR(10), ContactTable.ContactDate, 101) AS VARCHAR(10)), 'No Entry') AS ContactDate,
       COALESCE(ContactTable.SortName, 'No Entry') AS SortName,
       COALESCE(AddressTable.City, 'No Entry') AS City,
       COALESCE(ContactTable.ContactType, 'No Entry') AS ContactType
FROM ContactTable
LEFT OUTER JOIN UserTable ON ContactTable.UserID = UserTable.UserID
LEFT OUTER JOIN AddressTable ON UserTable.AddressID = AddressTable.AddressID

여기 위의 변환 명령문에 대한 SQL DateTime 형식의 차트입니다.

다른 팁

소금에 무게가 가치가있는 모든 플랫폼에서 Coalesce ().

캐스팅 문제를 처리하십시오.

와 같은:

--(SQL Server)
SELECT
  C.ContactID,
  COALESCE(CAST(CONVERT(varchar(10), C.ContactDate, 101) AS varchar(10), 'No Entry') AS ContactDate,
  COALESCE(SorName, 'No Entry') AS SortName

등 등

SELECT 
  ISNULL(ContactDate, 'No Entry') AS ContactDate
FROM Table

IsNull을 사용하는 것은 매우 간단합니다.

이 기능의 Oracle 버전을 호출합니다 nvl. 동일한 사용법 - SELECT nvl(col_name, desired_value) FROM foo.

이것의 더 일반적인 버전은입니다 decode, 여기에는 세 가지 매개 변수가 있으며 대체품을 수행 할 열 값을 지정할 수 있습니다 (모든 'Johnny'를 'John'또는 무언가로 바꿀 수 있습니다).

사용iif'액세스 DB 솔루션이지만 다른 DBS에서 작동 할 수 있습니다.

SELECT IIF(IsNull(Foo), 'No Entry' ,Foo), IIF(IsNull(Bar), 'No Entry' ,Bar) From TableName   

함수 IIF는 2 값 중 하나를 반환합니다. 표현식의 평가에 따라 다릅니다.
SQL 구문 : iif (표현, true-value1, false-value)

각 열에 대해 다른 호출을 할 수도 있습니다. 더 많은 개별 통화가 필요하지만 업데이트 할 행이 많지 않으면 더 빠를 수 있습니다.

update ContactTable
set ContactDate = 'No Entry'
where ContactDate is null;

각 열에 대해 반복하십시오.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top