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

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

新規登録して質問してみよう
ただいま回答率
85.48%
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の機能拡張版です。

Q&A

解決済

1回答

1674閲覧

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

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の機能拡張版です。

0グッド

0クリップ

投稿2020/08/18 10:56

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

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

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

sql

1 2insert int (...) 3select ... 4form テーブルA 5where( 6case 7 when @TEST = 'japan' then 8 case @ID 9 when 1 then @比較したい値 = @変数値 10 11 when 2 then @比較したい値 LIKE CONCAT('%' , @変数値, '%') 12 when 3... 13 when 4... 14 end 15 when @TEST = 'English' then 16 case @ID 17 when 1 then @比較したい値 = @変数値 18 19 when 2 then @比較したい値 LIKE CONCAT('%' , @変数値, '%') 20 when 3... 21 end 22 23end 24) 25 26

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

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

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

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

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

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

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

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なら部分一致の処理 などというふうに場合分けをしたいです。
guest

回答1

0

ベストアンサー

SQL

1insert int (...) 2select ... 3form テーブルA 4where( 5case 6 when @TEST = 'japan' then 7 ( @ID = 1 and @比較したい値 = @変数値 8 or @ID = 2 and @比較したい値 LIKE CONCAT('%' , @変数値, '%') 9 or @ID = 3... 10 or @ID = 4... 11 ) 12 when @TEST = 'English' then 13 ( @ID = 1 and @比較したい値 = @変数値 14 or @ID = 2 and @比較したい値 LIKE CONCAT('%' , @変数値, '%') 15 or @ID = 3... 16 ) 17 18end 19)

投稿2020/08/19 14:53

iruyas

総合スコア1067

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問