質問: ``` sectionQuery .append("SELECT a.classNo").append(multiLang ? ", b.classNo target_lang_no" : "") .append(" FROM ").append(getSTName(SorL, "goods")).append(" a "); ``` Javaの構文をなくして、sqlのみでみているのですが、?の意味など下記がどのようなクエリなのかわかりません。 下記はsql以外にもほかの言語が入っていますでしょうか? SELECT a.classNo multiLang ? , b.classNo target_lang_no : "" FROM getSTName(SorL, "goods") a; 上記のクエリの処理内容を知りたいです。
回答: 文中の以下の部分はJavaの3項演算子による計算を行っているので、変数`multiLang`が`true`か`false`で内容が変化します。 ``` multiLang ? ", b.classNo target_lang_no" : "" ``` * `true`の場合: `, b.classNo target_lang_no`になる * `false`の場合: 空文字になる また、`getTSName(SorL, "goods")`の箇所はJavaのメソッド呼び出しと思います。(具体的処理は質問文からは想定できませんが、テーブル名を取得するメソッドではないかと思います) ですので、生成されるSQL文は次のいずれかのパターンになると思います。 * `SELECT SELECT a.classNo, b.classNo target_lang_no FROM (テーブル名) a` * `SELECT SELECT a.classNo FROM (テーブル名) a` #前者のパターンの場合、テーブル`b`が足らないので、`getTSName`メソッドは複数のテーブル名を取得するメソッド化も知れません。