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

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

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

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

SQL

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

Transact-SQL

Transact-SQLはSybase ASEとMIcrosoft SQLサーバで対応されているSQLの機能拡張版です。

解決済

sql の case で条件にあった 演算子を返したい

nobita
nobita

総合スコア66

SQL Server

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

SQL

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

Transact-SQL

Transact-SQLはSybase ASEとMIcrosoft SQLサーバで対応されているSQLの機能拡張版です。

1回答

0リアクション

0クリップ

1218閲覧

投稿2020/08/18 10:56

お世話になっております。

げんざい  sql server management stduio で sql 文を記述しており、case文でつまづいております。

case で返すのは 値ではなく、 コードを返したいです。

sql

insert int (...) select ... form テーブルA where( case when @TEST = 'japan' then case @ID when 1 then @比較したい値 = @変数値 when 2 then @比較したい値 LIKE CONCAT('%' , @変数値, '%') when 3... when 4... end when @TEST = 'English' then case @ID when 1 then @比較したい値 = @変数値 when 2 then @比較したい値 LIKE CONCAT('%' , @変数値, '%') when 3... end end )

と現状書いているのですが、
case で分けて当てはまったときの 比較するコードを返して insert into で 比較して抽出されたデータをテーブルに追加していきたいのですが、
case 文が = のあたりに不適切なコードがありますとでたりしてうまくいきません。

アドバイスをお願い致します。

以下のような質問にはリアクションをつけましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

リアクションが多い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

sazi

2020/08/18 11:32

@比較したい値 = @変数値 とか @比較したい値 LIKE CONCAT('%' , @変数値, '%') は何をしたいのですか? 真偽(True/False)を結果として得たいのですか?
nobita

2020/08/18 14:17

すみません。 そのコードをそのまま条件として使いたいです。 case で当てはまった場合、 そのコードの条件で 処理をしたい。という感じです。 @比較したい値 = @変数値 や @比較したい値 LIKE CONCAT('%' , @変数値, '%') という処理を取り出して、条件に使いたいです
sazi

2020/08/18 15:17 編集

@比較したい値 = @変数値 は「@変数値」の内容を「@比較したい値」に代入し、その「@比較したい値」の値で追加したいという子ですか? それとも変数の中身を値で展開した式を値として使用したいという事ですか?
kotodama

2020/08/18 15:39

@比較したい値 = @変数値 左辺と右辺が同じ値かを調べるつもりでした。。。つまり完全一致です。 そのほかのケースでは、部分一致、前方一致などで、 ケース1なら完全一致の処理 ケース2なら部分一致の処理 などというふうに場合分けをしたいです。

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

SQL Server

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

SQL

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

Transact-SQL

Transact-SQLはSybase ASEとMIcrosoft SQLサーバで対応されているSQLの機能拡張版です。