特定の条件をチェックするためにISNULLを使用するのとCOALESCEを使用するのはどっちがいい?
2023-10-29 01:34:20
質問
に複数のパラメータを渡すことができることは知っています。
COALESCE
に複数のパラメータを渡すことができるのは知っていますが
が存在しないかどうかを確認したい場合、デフォルトを使用するのでしょうか、それとも、より良い方法として
ISNULL
を使うのが良いのでしょうか?
この2つの間にパフォーマンス上の利点はありますか?
どのように解決するのですか?
この問題は Microsoft Connect で報告されています。
との間にいくつかの違いがあることがわかります。
COALESCE
と
ISNULL
:
処理の書き換えの初期段階である
COALESCE( expression1, expression2 )
としてCASE WHEN expression1 IS NOT NULL THEN expression1 ELSE expression2 END
. この例では]です。COALESCE ( ( SELECT Nullable FROM Demo WHERE SomeCol = 1 ), 1 )
を生成します。
SELECT CASE WHEN (SELECT Nullable FROM Demo WHERE SomeCol = 1) IS NOT NULL THEN (SELECT Nullable FROM Demo WHERE SomeCol = 1) ELSE 1 END
クエリ処理の後段では、2つのサブクエリがもともと同じ式であったことを理解していないため、サブクエリを2回実行してしまう......。
一つの回避策は、提案したくはないのですが
COALESCE
をISNULL
に変更します。後者はサブクエリを重複させないからです。
関連
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] SQLテーブルで重複する値を検索する
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] テーブルネーミングのジレンマ:単数形と複数形の名前【非公開
-
[解決済み] 最初の行への結合方法
-
[解決済み] SQL JOIN - WHERE句とON句の比較
-
[解決済み] 各グループの上位1行を取得
-
[解決済み] SQLite - UPSERT *not* INSERT or REPLACE
-
[解決済み] Count()で条件を指定することは可能ですか?
-
[解決済み] SET NOCOUNT ON 使用法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[エラー処理] [MySQL] [Err] 1241 - オペランドは 1 つのカラムを含む必要があります。
-
解決策:java.sql.SQLException: ユーザー ''@'localhost'' (パスワード: YES を使用) のアクセスが拒否されました。
-
MySQL - ストアドプロシージャ (データ型、関数)
-
[解決済み] UNIONとUNION ALLの違いは何ですか?
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] Oracleの全テーブルのリストを取得しますか?
-
[解決済み] ある列の最大値を持つ行を取得する
-
[解決済み] Entity Framework VS LINQ to SQL VS ADO.NETでストアドプロシージャを使う?[クローズド]
-
[解決済み] Selectステートメントで特定のフィールドの重複を検索する
-
[解決済み] 別のテーブルに一致する項目がない行を選択するにはどうすればよいですか?