2

以下の表からContactDate、SortName、City、ContactType、Summaryを返すSQLクエリが必要です。いずれかの値がnullの場合、「エントリなし」というテキストを返すために必要です。

ContactTable

  • ContactID
  • ContactDate
  • ユーザーID
  • 概要
  • ContactType
  • SortName

UserTable

  • ユーザーID
  • ファーストネーム
  • 苗字
  • AddressID

AddressTable

  • AddressID
  • ジップ
4

6 に答える 6

14
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

上記のCONVERTステートメントのSQLDateTime形式のチャートを次に示します。

于 2008-10-15T22:23:07.943 に答える
8

塩でその重量の価値がある任意のプラットフォーム上の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

などなど。

于 2008-10-15T22:25:21.307 に答える
4
SELECT 
  ISNULL(ContactDate, 'No Entry') AS ContactDate
FROM Table

ISNULLの使用は非常に簡単です。

于 2008-10-15T22:23:37.147 に答える
1

この関数のOracleバージョンはと呼ばれnvlます。同じ使用法- SELECT nvl(col_name, desired_value) FROM foo

これのより一般的なバージョンはですdecode。これには3つのパラメーターがあり、置換を実行する列値を指定できます(したがって、すべての「Johnny」を「John」などに置き換えることができます)。

于 2008-10-16T00:26:52.077 に答える
0

' IIF 'の使用はAccessDBソリューションですが、他のDBでも機能する可能性があります。

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

関数IIFは、式の評価に応じて2つの値のいずれかを返します。
SQL構文:IIF(式、true-value1、false-value)

于 2008-10-16T00:20:45.553 に答える
0

列ごとに異なる呼び出しを行うこともできます。個々の呼び出しが多くなりますが、更新する行が多くない場合は高速になる可能性があります。

ContactTable の更新
set ContactDate = 'No Entry'
ここで、ContactDate は null です。

列ごとに繰り返します。

于 2008-10-16T02:16:44.197 に答える