質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

並列処理

複数の計算が同時に実行される手法

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

Q&A

解決済

1回答

851閲覧

NULLであるかどうかの処理を簡単に記述したい

ypk

総合スコア83

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

並列処理

複数の計算が同時に実行される手法

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

0グッド

0クリップ

投稿2021/05/26 11:42

SQL managementstudioにて下記のことを実現したいと考えています。

ファンクションにて、NULLのパラメータを受け取ったときはAの処理を、NULLではないパラメータを受け取ったときはBの処理を実行する

です。

この要件を満たすために、自分は下記のようなプログラミングを考えてみました。
しかし、どうも長ったらしくスッキリしません。
もっと簡単にソースコードを記述することは可能でしょうか?
もし何か、知恵がございましたらご教授いただきたく思います。

どうぞよろしくお願いいたします。

CREATE PROCEDURE test AS DECLARE @A DECLARE @B SET @A_P = @A SET @B_P = @B BEGIN CASE WHEN @A IS NULL THEN WHEN @B IS NULL THEN    INSERT INTO 商品管理A    VALUES ('1','あいうえお','かきくけこ','さしすせそ','たちつてと','なにぬねの') WHEN @B IS NOT NULL THEN    INSERT INTO 商品管理B    VALUES ('1','あいうえお','かきくけこ','さしすせそ','たちつてと','なにぬねの') END ELSE WHEN @A IS NOT NULL THEN WHEN @B IS NULL THEN    INSERT INTO 商品管理C    VALUES ('1','あいうえお','かきくけこ','さしすせそ','たちつてと','なにぬねの') WHEN @B IS NOT NULL THEN    INSERT INTO 商品管理B    VALUES ('1','あいうえお','かきくけこ','さしすせそ','たちつてと','なにぬねの') END END

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

何処の部分を冗長だと思われているのでしょう?
分岐の数は変えられませんから、書き方だけの問題では?

SQL

1if @A is null and @B is null 2 begin 3 (処理) 4 end 5else if @A is null and @B is not null 6 begin 7 (処理) 8 end 9else if @A is not null and @B is null 10 begin 11 (処理) 12 end 13else if @A is not null and @B is not null 14 begin 15 (処理) 16 end

投稿2021/05/26 14:55

編集2021/05/26 14:57
sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ypk

2021/05/26 21:13

ありがとうございます! 分岐の数は、変えることは難しいのですね、、、 書き方について参考になりました!ありがとうございます!
sazi

2021/05/27 00:15

分岐の数が変えられないとは、行う処理の数だけという意味です。 行う処理が共通なら、or条件にすれば分岐の数は減らせます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問