– 元の声明
SELECT FirstName + ' ' + LastName + ' '+ ISNULL(MI + '.', '') As MiddleInitial
FROM CS_tblMaster WHERE CustomerNo = 2627240
– 私の元の回答 (編集)
SELECT FirstName + ' ' + LastName + ' '+ (ISNULL(MI, '') + '.') As MiddleInitial
FROM CS_tblMaster WHERE CustomerNo = 2627240
この場合、SQL は最初に MI が Null かどうかを確認し、Null でない場合は MI を使用し、NULL の場合は空の文字列を使用します。次に、Null にならない結果をピリオドと連結します。
– 最終的な答え
SELECT
FirstName + ' ' + LastName + ' '
+ CASE WHEN MI IS NULL THEN '' ELSE MI + '.' END As MiddleInitial
FROM CS_tblMaster WHERE CustomerNo = 2627240
@Satish、まだ回答を選択していないため、まだ回答があると感じているかどうかわかりません。私の回答が短くて速かった場合は申し訳ありません。すべての回答を見て、最初にあなたの質問を見たとき、私はあなたの質問についてあまり考えていなかったことに気づきました.
「この実装について理解したい」と答えると、Null は SQL における完全に特殊な値です。空の文字列、スペース、ゼロではありません。それらは、より文字通りの意味で「何もない」という意味です。それらをチェックして、何かがnullかどうかを確認できます。しかし、Null で何かを「実行」することはできません。したがって、57 + Null = Null です。'Mary' + Null = Null. ((12 *37) +568) / Null = Null. 「Albert」、「Mary」、Null、および「Zeke」の Max() は Null です。この記事http://en.wikipedia.org/wiki/Null_(SQL)は、Null Propagation のセクションに適切な説明があり、役立つ場合があります。
Isnull 関数は、Null のテストではなく、それを処理する方法です。したがって、何かが Null かどうかをテストするには、Select で ColumnName Is Null または ColumnName Is Not Null を使用します。Isnull(MI,'') の意味は次のとおりです。値が必要です。MI の値が null でない場合は MI が必要です。それ以外の場合は空の文字列が必要です。
続けて、あなたが実際にやろうとしていることを最初に理解したかどうかはわかりません. 中間のイニシャルが null の期間を取得しようとしている場合は、私の最初の答えと他のほとんどの答えがうまくいくでしょう。しかし、あなたはこう言いたいのかもしれません: ミドルネームのイニシャルがある場合、ミドルネームのイニシャルの後にピリオドが必要です. ミドルネームのイニシャルがない場合、「Alberto C. Santaballa」または「Alberto Santaballa」ではなく、「Alberto . サンタバラ」。その場合は、編集した回答の最後のステートメントを使用してください。
@Zec、編集していただきありがとうございます。タイプミスは速すぎるタイピングの別の産物でした! :-/