5

SQL Server 2008 データベースで SELECT ステートメントを実行しています。

SELECT Name, DOB, Address1, Address2, City, State, Zip
FROM Users

ただし、特定の行で上記の列のいずれかが空の場合は、列に値を入れたいと思いNAます。

通常、これは次を返します。

SMITH^JOHN, 1/1/1980, 5140 N 1ST ST, NULL, NOWHERE, WA, 98221
DOE^JANE, 5/5/1970, NULL, NULL, NULL, NULL, NULL

私が返してほしいのは:

SMITH^JOHN, 1/1/1980, 5140 N 1ST ST, NA, NOWHERE, WA, 98221
DOE^JANE, 5/5/1970, NA, NA, NA, NA, NA

ただし、実際にデータベースを更新したくありません。結果SELECTNULL.

4

7 に答える 7

18

COALESCE関数を使用したい。

SELECT
    Name
,   DOB
,   COALESCE(Address1, 'NA')
,   COALESCE(Address2, 'NA')
,   COALESCE(City, 'NA')
,   COALESCE(State, 'NA')
,   COALESCE(Zip, 'NA')
FROM Users
于 2012-06-27T16:51:36.357 に答える
5

SQL Server 2008 には、NULL値を別の値に置き換える関数が 2 つあります。

1. ISNULL関数には 2 つのパラメータが必要でした: チェックする値と null 値の置換

ISNULL(値,置換)

2. COALESCE 関数の動作は少し異なります。COALESCEは任意の数のパラメータを取り、最初の非 NULL 値を返します。私は ISNULL よりも COALESCE を好みます。ANSI 標準に準拠しているからです。ISNULL はそうではありません。

COALESCE(値1,値1,値3,値N,置換)

これがうまくいくことを願っています。

于 2012-06-27T17:03:57.937 に答える
5

試す:

ISNULL(expression, value_if_expression_is_null)

他の人が指摘したように、 COALESCE もオプションです。

COALESCE(expression, expression2, expression3)

null 以外の最初の値を返す

ここに違いを説明する詳細な記事があります:

http://databases.aspfaq.com/database/coalesce-vs-isnull-sql.html

于 2012-06-27T16:51:51.267 に答える
2
SELECT
  Name, DOB,
  (CASE WHEN Address1 IS NULL THEN 'NA' ELSE Address1 END) AS Address1,
  (CASE WHEN Address2 IS NULL THEN 'NA' ELSE Address2 END) AS Address2,
  ...
FROM Users
于 2012-06-27T16:53:33.967 に答える
2
SELECT 
  Name, DOB, Address1, 
  coalesce(Address2,'NA'), coalesce(City,'NA'), 
  coalesce(State,'NA'), coalesce(Zip,'NA')
FROM Users
于 2012-06-27T17:01:32.197 に答える
1

使用isnull:

SELECT
    Name, 
    DOB, 
    isnull(Address1, 'NA') as [Address1], 
    isnull(Address2, 'NA') as [Address2], 
    isnull(City, 'NA') as [City], 
    isnull(State, 'NA') as [State], 
    isnull(Zip, 'NA') as [Zip]
FROM Users

を使用することもできます。これは、3 つ以上の引数を取ることができることを除いて、coalesceまったく同じです。isnull引数は左から右にチェックされ、最初の非 null 値が返されます。値は同じ型でなければなりません。

于 2012-06-27T16:54:21.160 に答える