アプリ版:「スタンプのみでお礼する」機能のリリースについて

現在bashからmysqlを起動しselect文でテーブルから取得したデータをcsvで出力する、というツールを作成しています。
shell実行時の第一引数にカンマ区切りでデータを入力し、その引数をwhere句(in)の条件として使用しているのですが、カンマ区切りで入力された引数をinの対象データとしてうまく扱うことだできません。
どなたか良い方法はありませんでしょうか?

-------------------問題部分-------------------------
JOUKEN = $1

mysql -u xxxxx -xxxxx xxxxx_db
SELECT *
FROM TABLE1 T1
WHERE T1.NUMBER IN ("${JOUKEN}")
----------------------------------------------------

◆現状
(1)複数のデータを対象とせず(カンマで区切らず)使用する事は可能。
(2)現在変数がダブルクォートでくくられているため、引数をカンマ区切りで指定しても1つの文字列として見られてしまう。
(3)ダブルクォートを外すと構文エラーとなってしまう。
(4)ダブルクォートを外した際に、変数の使用方法を「$JOUKEN」「{$JOUKEN}」など試したが、同様にエラー。

よろしくお願いします!

A 回答 (2件)

MySQLのバージョンは、何でしょうかね?



結論から言うと、in条件の値リストの個数を可変にしたいなら、SQLを文字列で組み立て、prepare + executeで実行(SQLの動的実行)することになります。
    • good
    • 0

質問に書いてあるとおりだと、SQL文がmysqlコマンドの入力にならないですが、実際にはどういうスクリプトなんでしょう?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!